From ef37b4b6a22fe04b5a1789c45b28c8d7e6fe764a Mon Sep 17 00:00:00 2001 From: Krutika Dhananjay Date: Sat, 1 Feb 2014 22:49:22 +0530 Subject: glusterd: Reset opinfo.op ONLY if lock succeeded ... and also initialise @this before doing anything else. Change-Id: I0244a7f61a826b32f4c2dfe51e246f2593a38211 BUG: 1060434 Signed-off-by: Krutika Dhananjay Reviewed-on: http://review.gluster.org/6885 Reviewed-by: Kaushal M Reviewed-by: Krishnan Parthasarathi Tested-by: Gluster Build System Reviewed-on: http://review.gluster.org/6922 Reviewed-by: Vijay Bellur --- xlators/mgmt/glusterd/src/glusterd-syncop.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/xlators/mgmt/glusterd/src/glusterd-syncop.c b/xlators/mgmt/glusterd/src/glusterd-syncop.c index c975d01f1..4319841c5 100644 --- a/xlators/mgmt/glusterd/src/glusterd-syncop.c +++ b/xlators/mgmt/glusterd/src/glusterd-syncop.c @@ -1067,6 +1067,8 @@ gd_unlock_op_phase (struct list_head *peers, glusterd_op_t op, int op_ret, xlator_t *this = NULL; struct syncargs args = {0}; + this = THIS; + if (!npeers) { ret = 0; goto out; @@ -1077,7 +1079,6 @@ gd_unlock_op_phase (struct list_head *peers, glusterd_op_t op, int op_ret, if (!is_locked) goto out; - this = THIS; synctask_barrier_init((&args)); peer_cnt = 0; list_for_each_entry_safe (peerinfo, tmp, peers, op_peers_list) { @@ -1099,9 +1100,11 @@ gd_unlock_op_phase (struct list_head *peers, glusterd_op_t op, int op_ret, out: glusterd_op_send_cli_response (op, op_ret, 0, req, op_ctx, op_errstr); - glusterd_op_clear_op (op); - if (is_locked) + /* Unlock and reset opinfo.op ONLY if lock ever succeeded! */ + if (is_locked) { + glusterd_op_clear_op (op); glusterd_unlock (MY_UUID); + } return 0; } -- cgit