summaryrefslogtreecommitdiff
path: root/filesystems/glusterfs/patches/patch-10963
diff options
context:
space:
mode:
Diffstat (limited to 'filesystems/glusterfs/patches/patch-10963')
-rw-r--r--filesystems/glusterfs/patches/patch-10963110
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;
+ }
+