summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNiels de Vos <ndevos@redhat.com>2017-01-13 14:02:45 +0100
committerRaghavendra Talur <rtalur@redhat.com>2017-05-14 17:18:32 +0000
commit8a1fa6e278e7be66e2778b1fc01f9af1181b11d6 (patch)
tree251ab2622534665891884f9c0c8e07268de05181
parent9c0b25b6443c3ccf3e2ec8224c4ea7bfc61f1135 (diff)
nfs/nlm: ignore notify when there is no matching rpc request
In certain (unclear) occasions it seems to happen that there are notifications sent to the Gluster/NFS NLM service, but no call-state can be found. Instead of segfaulting, log an error but keep on running. Cherry picked from commit e997d752ba08f80b1b00d2c0035874befafe5200: > Change-Id: I0f186e56e46a86ca40314d230c1cc7719c61f0b5 > BUG: 1381970 > Signed-off-by: Niels de Vos <ndevos@redhat.com> > Reviewed-on: https://review.gluster.org/17185 > Smoke: Gluster Build System <jenkins@build.gluster.org> > NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org> > CentOS-regression: Gluster Build System <jenkins@build.gluster.org> > Reviewed-by: soumya k <skoduri@redhat.com> > Reviewed-by: jiffin tony Thottan <jthottan@redhat.com> > Reviewed-by: Jeff Darcy <jeff@pl.atyp.us> Change-Id: I0f186e56e46a86ca40314d230c1cc7719c61f0b5 BUG: 1450378 Signed-off-by: Niels de Vos <ndevos@redhat.com> Reviewed-on: https://review.gluster.org/17270 Smoke: Gluster Build System <jenkins@build.gluster.org> NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org> CentOS-regression: Gluster Build System <jenkins@build.gluster.org> Reviewed-by: Raghavendra Talur <rtalur@redhat.com>
-rw-r--r--xlators/nfs/server/src/nlm4.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/xlators/nfs/server/src/nlm4.c b/xlators/nfs/server/src/nlm4.c
index 1675116c461..0e4a4d824fa 100644
--- a/xlators/nfs/server/src/nlm4.c
+++ b/xlators/nfs/server/src/nlm4.c
@@ -923,10 +923,16 @@ nlm_rpcclnt_notify (struct rpc_clnt *rpc_clnt, void *mydata,
nfs3_call_state_t *cs = NULL;
cs = mydata;
- caller_name = cs->args.nlm4_lockargs.alock.caller_name;
switch (fn) {
case RPC_CLNT_CONNECT:
+ if (!cs->req) {
+ gf_msg (GF_NLM, GF_LOG_ERROR, EINVAL,
+ NFS_MSG_RPC_CLNT_ERROR, "Spurious notify?!");
+ goto err;
+ }
+
+ caller_name = cs->args.nlm4_lockargs.alock.caller_name;
ret = nlm_set_rpc_clnt (rpc_clnt, caller_name);
if (ret == -1) {
gf_msg (GF_NLM, GF_LOG_ERROR, 0,