diff options
Diffstat (limited to 'xlators/mgmt/glusterd/src/glusterd-syncop.h')
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-syncop.h | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-syncop.h b/xlators/mgmt/glusterd/src/glusterd-syncop.h index 212e495d52d..9318862e508 100644 --- a/xlators/mgmt/glusterd/src/glusterd-syncop.h +++ b/xlators/mgmt/glusterd/src/glusterd-syncop.h @@ -18,23 +18,27 @@ #define GD_SYNCOP(rpc, stb, cbk, req, prog, procnum, xdrproc) do { \ int ret = 0; \ struct synctask *task = NULL; \ - gf_boolean_t cbk_lost = _gf_true; \ + glusterd_conf_t *conf= THIS->private; \ + \ task = synctask_get (); \ stb->task = task; \ \ + /*This is to ensure that the brick_op_cbk is able to \ + * take the big lock*/ \ + synclock_unlock (&conf->big_lock); \ ret = gd_syncop_submit_request (rpc, req, stb, \ prog, procnum, cbk, \ - (xdrproc_t)xdrproc, \ - &cbk_lost); \ - if (!cbk_lost) \ + (xdrproc_t)xdrproc); \ + if (!ret) \ synctask_yield (stb->task); \ + synclock_lock (&conf->big_lock); \ } while (0) int gd_syncop_submit_request (struct rpc_clnt *rpc, void *req, void *cookie, rpc_clnt_prog_t *prog, int procnum, fop_cbk_fn_t cbkfn, - xdrproc_t xdrproc, gf_boolean_t *cbk_lost); + xdrproc_t xdrproc); int gd_syncop_mgmt_lock (struct rpc_clnt *rpc, struct syncargs *arg, |