summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tests/bugs/core/bug-1421721-mpx-toggle.t25
-rw-r--r--xlators/mgmt/glusterd/src/glusterd-utils.c3
2 files changed, 27 insertions, 1 deletions
diff --git a/tests/bugs/core/bug-1421721-mpx-toggle.t b/tests/bugs/core/bug-1421721-mpx-toggle.t
new file mode 100644
index 00000000000..231be5b81a0
--- /dev/null
+++ b/tests/bugs/core/bug-1421721-mpx-toggle.t
@@ -0,0 +1,25 @@
+#!/bin/bash
+
+. $(dirname $0)/../../include.rc
+. $(dirname $0)/../../volume.rc
+
+write_a_file () {
+ echo $1 > $2
+}
+
+TEST glusterd
+TEST $CLI volume create $V0 $H0:$B0/${V0}[0,1]
+
+TEST $CLI volume set all cluster.brick-multiplex on
+TEST $CLI volume start $V0
+
+TEST $GFS -s $H0 --volfile-id=$V0 $M0
+TEST write_a_file "hello" $M0/a_file
+
+TEST force_umount $M0
+TEST $CLI volume stop $V0
+
+TEST $CLI volume set all cluster.brick-multiplex off
+TEST $CLI volume start $V0
+
+cleanup
diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.c b/xlators/mgmt/glusterd/src/glusterd-utils.c
index b6f001a8901..c501e1ad00b 100644
--- a/xlators/mgmt/glusterd/src/glusterd-utils.c
+++ b/xlators/mgmt/glusterd/src/glusterd-utils.c
@@ -1875,10 +1875,11 @@ glusterd_volume_start_glusterfs (glusterd_volinfo_t *volinfo,
if (rpc) {
brickinfo->rpc = NULL;
conn = &rpc->conn;
+ pthread_mutex_lock (&conn->lock);
if (conn->reconnect) {
(void ) gf_timer_call_cancel (rpc->ctx, conn->reconnect);
- //rpc_clnt_unref (rpc);
}
+ pthread_mutex_unlock (&conn->lock);
rpc_clnt_unref (rpc);
}