summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tests/bugs/bug-948686.t10
-rw-r--r--xlators/mgmt/glusterd/src/glusterd.c3
2 files changed, 13 insertions, 0 deletions
diff --git a/tests/bugs/bug-948686.t b/tests/bugs/bug-948686.t
index 63c099a79bc..db9c198a96f 100644
--- a/tests/bugs/bug-948686.t
+++ b/tests/bugs/bug-948686.t
@@ -34,3 +34,13 @@ TEST $CLI_2 volume stop $V0;
TEST $CLI_2 volume delete $V0;
cleanup;
+
+TEST glusterd;
+TEST $CLI volume create $V0 $H0:$B0/$V0
+TEST $CLI volume start $V0
+pkill glusterd;
+pkill glusterfsd;
+TEST glusterd
+TEST $CLI volume status $V0
+
+cleanup;
diff --git a/xlators/mgmt/glusterd/src/glusterd.c b/xlators/mgmt/glusterd/src/glusterd.c
index cb5daf4bb3d..41a1cb368f8 100644
--- a/xlators/mgmt/glusterd/src/glusterd.c
+++ b/xlators/mgmt/glusterd/src/glusterd.c
@@ -873,6 +873,8 @@ _install_mount_spec (dict_t *opts, char *key, data_t *value, void *data)
static int
gd_default_synctask_cbk (int ret, call_frame_t *frame, void *opaque)
{
+ glusterd_conf_t *priv = THIS->private;
+ synclock_unlock (&priv->big_lock);
return ret;
}
@@ -886,6 +888,7 @@ glusterd_launch_synctask (synctask_fn_t fn, void *opaque)
this = THIS;
priv = this->private;
+ synclock_lock (&priv->big_lock);
ret = synctask_new (this->ctx->env, fn, gd_default_synctask_cbk, NULL,
opaque);
if (ret)