summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorvmallika <vmallika@redhat.com>2015-03-11 18:03:47 +0530
committerVijay Bellur <vbellur@redhat.com>2015-03-14 20:18:04 -0700
commit9f71b25f34a24741496875ab947f6f9c95ec277f (patch)
treebe94a876aa4aedf923eb89e54374f38f2e3866ce
parent7c177bda6ccd1c3e7a7c070eb2ab0dc5e6b32a5c (diff)
syncop: assign lk_owner for the newly created frame
syncop_inodelk doesn't work properly as lk_owner is not set in the frame created by 'synctask_create'. There is a possibility that more than one thread can acquire inode lock with syncop_inodelk Change-Id: I8193edb0d24b3a6e3a3f6a0c5d7ab5a1be8e7daf BUG: 1188636 Signed-off-by: vmallika <vmallika@redhat.com> Reviewed-on: http://review.gluster.org/9858 Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Krishnan Parthasarathi <kparthas@redhat.com> Reviewed-by: Pranith Kumar Karampuri <pkarampu@redhat.com> Reviewed-by: Vijay Bellur <vbellur@redhat.com>
-rw-r--r--libglusterfs/src/syncop.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/libglusterfs/src/syncop.c b/libglusterfs/src/syncop.c
index 1b968d5164a..9df462321aa 100644
--- a/libglusterfs/src/syncop.c
+++ b/libglusterfs/src/syncop.c
@@ -467,6 +467,8 @@ synctask_create (struct syncenv *env, synctask_fn_t fn, synctask_cbk_t cbk,
newtask->frame = frame;
if (!frame) {
newtask->opframe = create_frame (this, this->ctx->pool);
+ set_lk_owner_from_ptr (&newtask->opframe->root->lk_owner,
+ newtask->opframe->root);
} else {
newtask->opframe = copy_frame (frame);
}