diff options
author | Anand Avati <avati@redhat.com> | 2013-08-15 13:53:52 -0700 |
---|---|---|
committer | Anand Avati <avati@redhat.com> | 2013-08-18 22:11:45 -0700 |
commit | 3c9f3e642fd3ea81b9371eb1eec946882b1cb746 (patch) | |
tree | cd3a383190397a53f6fa264b92bd98f782515c24 /xlators | |
parent | e79be3d1655edb2b9f64a13e1fabae601c7d19e4 (diff) |
glusterd: release big locks while doing mount
Else things can deadlock in getspec v/s glusterd_do_mount()
Change-Id: Ie70b43916e495c1c8f93e4ed0836c2fb7b0e1f1d
BUG: 997576
Signed-off-by: Anand Avati <avati@redhat.com>
Reviewed-on: http://review.gluster.org/5636
Tested-by: Joe Julian <joe@julianfamily.org>
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Amar Tumballi <amarts@redhat.com>
Reviewed-by: Krishnan Parthasarathi <kparthas@redhat.com>
Diffstat (limited to 'xlators')
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-handler.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-handler.c b/xlators/mgmt/glusterd/src/glusterd-handler.c index 4893c8245df..afc223669e7 100644 --- a/xlators/mgmt/glusterd/src/glusterd-handler.c +++ b/xlators/mgmt/glusterd/src/glusterd-handler.c @@ -2496,8 +2496,10 @@ __glusterd_handle_mount (rpcsvc_request_t *req) gf1_cli_mount_rsp rsp = {0,}; dict_t *dict = NULL; int ret = 0; + glusterd_conf_t *priv = NULL; GF_ASSERT (req); + priv = THIS->private; ret = xdr_to_generic (req->msg[0], &mnt_req, (xdrproc_t)xdr_gf1_cli_mount_req); @@ -2530,8 +2532,10 @@ __glusterd_handle_mount (rpcsvc_request_t *req) } } + synclock_unlock (&priv->big_lock); rsp.op_ret = glusterd_do_mount (mnt_req.label, dict, &rsp.path, &rsp.op_errno); + synclock_lock (&priv->big_lock); out: if (!rsp.path) |