diff options
| author | Krutika Dhananjay <kdhananj@redhat.com> | 2014-02-01 22:49:22 +0530 | 
|---|---|---|
| committer | Vijay Bellur <vbellur@redhat.com> | 2014-02-07 19:00:19 -0800 | 
| commit | ef37b4b6a22fe04b5a1789c45b28c8d7e6fe764a (patch) | |
| tree | 6a3f7c15f9ed3fe809e7ab0630ac303e2f968378 | |
| parent | 358b88087051d3b2534446c62f6bbac472e9198b (diff) | |
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 <kdhananj@redhat.com>
Reviewed-on: http://review.gluster.org/6885
Reviewed-by: Kaushal M <kaushal@redhat.com>
Reviewed-by: Krishnan Parthasarathi <kparthas@redhat.com>
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-on: http://review.gluster.org/6922
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
| -rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-syncop.c | 9 | 
1 files 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;  }  | 
