diff options
Diffstat (limited to 'filesystems/glusterfs/patches/patch-10963')
-rw-r--r-- | filesystems/glusterfs/patches/patch-10963 | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/filesystems/glusterfs/patches/patch-10963 b/filesystems/glusterfs/patches/patch-10963 new file mode 100644 index 00000000000..f247de6f511 --- /dev/null +++ b/filesystems/glusterfs/patches/patch-10963 @@ -0,0 +1,110 @@ +$NetBSD: patch-10963,v 1.1 2015/06/02 03:44:16 manu Exp $ + +From upstream http://review.gluster.org/10963 + +From 5c359a79bd3c978d0f636082871c289c717d354e Mon Sep 17 00:00:00 2001 +From: Krishnan Parthasarathi <kparthas@redhat.com> +Date: Tue, 19 May 2015 14:48:01 +0530 +Subject: [PATCH] glusterd: fix repeated connection to nfssvc failed msgs + +... and disable reconnect timer on rpc_clnt_disconnect. + +Root Cause +---------- + +gluster-NFS service wouldn't be started if there are no +started volumes that have nfs service enabled for them. +Before this fix we would initiate a connect even when +the gluster-NFS service wasn't (re)started. Compounding +that glusterd_conn_disconnect doesn't disable reconnect +timer. So, it is possible that the reconnect timer was +in execution when the timer event was attempted to be +removed. + +Change-Id: Iadcb5cff9eafefa95eaf3a1a9413eeb682d3aaac +BUG: 1222065 +Signed-off-by: Krishnan Parthasarathi <kparthas@redhat.com> +Reviewed-on: http://review.gluster.org/10830 +Reviewed-by: Atin Mukherjee <amukherj@redhat.com> +Reviewed-by: Gaurav Kumar Garg <ggarg@redhat.com> +Reviewed-by: Kaushal M <kaushal@redhat.com> +--- + +diff --git rpc/rpc-lib/src/rpc-clnt.c rpc/rpc-lib/src/rpc-clnt.c +index 264a312..db99484 100644 +--- rpc/rpc-lib/src/rpc-clnt.c ++++ rpc/rpc-lib/src/rpc-clnt.c +@@ -1108,6 +1108,11 @@ + + conn = &rpc->conn; + ++ pthread_mutex_lock (&conn->lock); ++ { ++ rpc->disabled = 0; ++ } ++ pthread_mutex_unlock (&conn->lock); + rpc_clnt_reconnect (conn); + + return 0; +@@ -1758,6 +1763,7 @@ + + pthread_mutex_lock (&conn->lock); + { ++ rpc->disabled = 1; + if (conn->timer) { + gf_timer_call_cancel (rpc->ctx, conn->timer); + conn->timer = NULL; +diff --git xlators/mgmt/glusterd/src/glusterd-conn-mgmt.c xlators/mgmt/glusterd/src/glusterd-conn-mgmt.c +index da8c909..fca9323 100644 +--- xlators/mgmt/glusterd/src/glusterd-conn-mgmt.c ++++ xlators/mgmt/glusterd/src/glusterd-conn-mgmt.c +@@ -80,7 +80,6 @@ + int + glusterd_conn_term (glusterd_conn_t *conn) + { +- rpc_clnt_disable (conn->rpc); + rpc_clnt_unref (conn->rpc); + return 0; + } +diff --git a/xlators/mgmt/glusterd/src/glusterd-nfs-svc.c xlators/mgmt/glusterd/src/glusterd-nfs-svc.c +index 49b1b56..cb08a20 100644 +--- xlators/mgmt/glusterd/src/glusterd-nfs-svc.c ++++ xlators/mgmt/glusterd/src/glusterd-nfs-svc.c +@@ -164,18 +164,15 @@ + { + int ret = -1; + +- if (glusterd_are_all_volumes_stopped ()) { +- ret = svc->stop (svc, SIGKILL); ++ ret = svc->stop (svc, SIGKILL); ++ if (ret) ++ goto out; + +- } else { +- ret = glusterd_nfssvc_create_volfile (); +- if (ret) +- goto out; ++ ret = glusterd_nfssvc_create_volfile (); ++ if (ret) ++ goto out; + +- ret = svc->stop (svc, SIGKILL); +- if (ret) +- goto out; +- ++ if (glusterd_nfssvc_need_start ()) { + ret = svc->start (svc, flags); + if (ret) + goto out; +@@ -192,10 +189,9 @@ + + int + glusterd_nfssvc_start (glusterd_svc_t *svc, int flags) + { +- if (glusterd_nfssvc_need_start ()) +- return glusterd_svc_start (svc, flags, NULL); ++ return glusterd_svc_start (svc, flags, NULL); + + return 0; + } + |