summaryrefslogtreecommitdiffstats
path: root/xlators
diff options
context:
space:
mode:
authorPranith Kumar K <pranithk@gluster.com>2012-05-04 00:29:40 +0530
committerAnand Avati <avati@redhat.com>2012-05-03 12:22:09 -0700
commitb8cfc761bd7a664a4ed73999e898973c9718ecee (patch)
treea2ac7ea6f1ed7e985d500f08f323c28b82037c4c /xlators
parent9b3def01e4b6c7c3e6899e4ad52ee64440285f54 (diff)
cluster/afr: Fix race in nonblocking entrylk
Change-Id: I6d96c1aed4bf08b90b6918e3694c688eccdc2445 BUG: 818578 Signed-off-by: Pranith Kumar K <pranithk@gluster.com> Reviewed-on: http://review.gluster.com/3270 Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Anand Avati <avati@redhat.com>
Diffstat (limited to 'xlators')
-rw-r--r--xlators/cluster/afr/src/afr-lk-common.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/xlators/cluster/afr/src/afr-lk-common.c b/xlators/cluster/afr/src/afr-lk-common.c
index dfdde2975f7..e85fe6dab67 100644
--- a/xlators/cluster/afr/src/afr-lk-common.c
+++ b/xlators/cluster/afr/src/afr-lk-common.c
@@ -1180,12 +1180,6 @@ afr_nonblocking_entrylk_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
AFR_LOCK_OP, NULL, op_ret,
op_errno, (long) cookie);
- LOCK (&frame->lock);
- {
- call_count = --int_lock->lk_call_count;
- }
- UNLOCK (&frame->lock);
-
if (op_ret < 0 ) {
if (op_errno == ENOSYS) {
/* return ENOTSUP */
@@ -1203,6 +1197,12 @@ afr_nonblocking_entrylk_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
int_lock->entrylk_lock_count++;
}
+ LOCK (&frame->lock);
+ {
+ call_count = --int_lock->lk_call_count;
+ }
+ UNLOCK (&frame->lock);
+
if (call_count == 0) {
gf_log (this->name, GF_LOG_TRACE,
"Last locking reply received");