diff options
Diffstat (limited to 'glusterfsd/src')
-rw-r--r-- | glusterfsd/src/glusterfsd-mgmt.c | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/glusterfsd/src/glusterfsd-mgmt.c b/glusterfsd/src/glusterfsd-mgmt.c index b1f00691c8c..0febaf20cbd 100644 --- a/glusterfsd/src/glusterfsd-mgmt.c +++ b/glusterfsd/src/glusterfsd-mgmt.c @@ -1219,6 +1219,8 @@ glusterfs_handle_barrier (rpcsvc_request_t *req) xlator_t *old_THIS = NULL; dict_t *dict = NULL; char name[1024] = {0,}; + gf_boolean_t barrier = _gf_true; + gf_boolean_t barrier_err = _gf_false; GF_ASSERT (req); @@ -1269,7 +1271,14 @@ glusterfs_handle_barrier (rpcsvc_request_t *req) brick_rsp.op_ret = ret; brick_rsp.op_errstr = gf_strdup ("Failed to reconfigure " "barrier."); - goto submit_reply; + /* This is to invoke changelog-barrier disable if barrier + * disable fails and don't invoke if barrier enable fails. + */ + barrier = dict_get_str_boolean (dict, "barrier", _gf_true); + if (barrier) + goto submit_reply; + else + barrier_err = _gf_true; } /* Reset THIS so that we have it correct in case of an error below @@ -1277,7 +1286,6 @@ glusterfs_handle_barrier (rpcsvc_request_t *req) THIS = old_THIS; /* Send barrier request to changelog as well */ - /* Commenting out the below code till the changelog changes are merged memset (name, 0, sizeof (name)); snprintf (name, sizeof (name), "%s-changelog", brick_req.name); @@ -1290,16 +1298,16 @@ glusterfs_handle_barrier (rpcsvc_request_t *req) } THIS = xlator; - ret = xlator->reconfigure (xlator, dict); - - + ret = xlator->notify (xlator, GF_EVENT_TRANSLATOR_OP, dict); if (ret) { brick_rsp.op_ret = ret; - brick_rsp.op_errstr = gf_strdup ("Failed to reconfigure " - "changelog."); + brick_rsp.op_errstr = gf_strdup ("changelog notify failed"); goto submit_reply; } - */ + + if (barrier_err) + ret = -1; + submit_reply: THIS = old_THIS; |