|
|
21ab4e |
From a5a5a32ee96a6a481f34edd4084b34a19715c4e4 Mon Sep 17 00:00:00 2001
|
|
|
21ab4e |
From: Jeff Darcy <jdarcy@redhat.com>
|
|
|
21ab4e |
Date: Fri, 17 Feb 2017 09:42:46 -0500
|
|
|
21ab4e |
Subject: [PATCH 336/361] glusterd: take conn->lock around operations on
|
|
|
21ab4e |
conn->reconnect
|
|
|
21ab4e |
|
|
|
21ab4e |
Failure to do this could lead to a race in which a timer would be
|
|
|
21ab4e |
removed twice concurrently, corrupting the timer list (because
|
|
|
21ab4e |
gf_timer_call_cancel has no internal protection against this) and
|
|
|
21ab4e |
possibly causing a crash.
|
|
|
21ab4e |
|
|
|
21ab4e |
mainline:
|
|
|
21ab4e |
> BUG: 1421721
|
|
|
21ab4e |
> Reviewed-on: https://review.gluster.org/16662
|
|
|
21ab4e |
> Smoke: Gluster Build System <jenkins@build.gluster.org>
|
|
|
21ab4e |
> NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
|
|
|
21ab4e |
> CentOS-regression: Gluster Build System <jenkins@build.gluster.org>
|
|
|
21ab4e |
> Reviewed-by: Atin Mukherjee <amukherj@redhat.com>
|
|
|
21ab4e |
(cherry picked from commit d92ca253ef73086e496a410e7dba62467a9759da)
|
|
|
21ab4e |
|
|
|
21ab4e |
BUG: 1417815
|
|
|
21ab4e |
Change-Id: Ic1a8b612d436daec88fd6cee935db0ae81a47d5c
|
|
|
21ab4e |
Signed-off-by: Jeff Darcy <jdarcy@redhat.com>
|
|
|
21ab4e |
Reviewed-on: https://code.engineering.redhat.com/gerrit/101317
|
|
|
21ab4e |
Tested-by: Milind Changire <mchangir@redhat.com>
|
|
|
21ab4e |
Reviewed-by: Atin Mukherjee <amukherj@redhat.com>
|
|
|
21ab4e |
---
|
|
|
21ab4e |
tests/bugs/core/bug-1421721-mpx-toggle.t | 25 +++++++++++++++++++++++++
|
|
|
21ab4e |
xlators/mgmt/glusterd/src/glusterd-utils.c | 3 ++-
|
|
|
21ab4e |
2 files changed, 27 insertions(+), 1 deletion(-)
|
|
|
21ab4e |
create mode 100644 tests/bugs/core/bug-1421721-mpx-toggle.t
|
|
|
21ab4e |
|
|
|
21ab4e |
diff --git a/tests/bugs/core/bug-1421721-mpx-toggle.t b/tests/bugs/core/bug-1421721-mpx-toggle.t
|
|
|
21ab4e |
new file mode 100644
|
|
|
21ab4e |
index 0000000..231be5b
|
|
|
21ab4e |
--- /dev/null
|
|
|
21ab4e |
+++ b/tests/bugs/core/bug-1421721-mpx-toggle.t
|
|
|
21ab4e |
@@ -0,0 +1,25 @@
|
|
|
21ab4e |
+#!/bin/bash
|
|
|
21ab4e |
+
|
|
|
21ab4e |
+. $(dirname $0)/../../include.rc
|
|
|
21ab4e |
+. $(dirname $0)/../../volume.rc
|
|
|
21ab4e |
+
|
|
|
21ab4e |
+write_a_file () {
|
|
|
21ab4e |
+ echo $1 > $2
|
|
|
21ab4e |
+}
|
|
|
21ab4e |
+
|
|
|
21ab4e |
+TEST glusterd
|
|
|
21ab4e |
+TEST $CLI volume create $V0 $H0:$B0/${V0}[0,1]
|
|
|
21ab4e |
+
|
|
|
21ab4e |
+TEST $CLI volume set all cluster.brick-multiplex on
|
|
|
21ab4e |
+TEST $CLI volume start $V0
|
|
|
21ab4e |
+
|
|
|
21ab4e |
+TEST $GFS -s $H0 --volfile-id=$V0 $M0
|
|
|
21ab4e |
+TEST write_a_file "hello" $M0/a_file
|
|
|
21ab4e |
+
|
|
|
21ab4e |
+TEST force_umount $M0
|
|
|
21ab4e |
+TEST $CLI volume stop $V0
|
|
|
21ab4e |
+
|
|
|
21ab4e |
+TEST $CLI volume set all cluster.brick-multiplex off
|
|
|
21ab4e |
+TEST $CLI volume start $V0
|
|
|
21ab4e |
+
|
|
|
21ab4e |
+cleanup
|
|
|
21ab4e |
diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.c b/xlators/mgmt/glusterd/src/glusterd-utils.c
|
|
|
21ab4e |
index 9a294a8..66b3d54 100644
|
|
|
21ab4e |
--- a/xlators/mgmt/glusterd/src/glusterd-utils.c
|
|
|
21ab4e |
+++ b/xlators/mgmt/glusterd/src/glusterd-utils.c
|
|
|
21ab4e |
@@ -1862,10 +1862,11 @@ glusterd_volume_start_glusterfs (glusterd_volinfo_t *volinfo,
|
|
|
21ab4e |
if (rpc) {
|
|
|
21ab4e |
brickinfo->rpc = NULL;
|
|
|
21ab4e |
conn = &rpc->conn;
|
|
|
21ab4e |
+ pthread_mutex_lock (&conn->lock);
|
|
|
21ab4e |
if (conn->reconnect) {
|
|
|
21ab4e |
(void ) gf_timer_call_cancel (rpc->ctx, conn->reconnect);
|
|
|
21ab4e |
- //rpc_clnt_unref (rpc);
|
|
|
21ab4e |
}
|
|
|
21ab4e |
+ pthread_mutex_unlock (&conn->lock);
|
|
|
21ab4e |
rpc_clnt_unref (rpc);
|
|
|
21ab4e |
}
|
|
|
21ab4e |
|
|
|
21ab4e |
--
|
|
|
21ab4e |
1.8.3.1
|
|
|
21ab4e |
|