diff options
author | Anand Avati <avati@redhat.com> | 2014-01-19 19:44:06 -0800 |
---|---|---|
committer | Anand Avati <avati@redhat.com> | 2014-01-22 17:30:24 -0800 |
commit | 6c6c7eba87190bfe3c721faaa190949ff611405b (patch) | |
tree | d1a5e879af5f1cd35cae1eb6797f9771b9a4a2f4 | |
parent | 57edad947b4c43d7c8f05bac45c8e63c788f43ca (diff) |
locks: set @lock->frame = NULL when lock is granted
This way disconnect cleanup code can differentiate which locks
are granted vs blocked.
Change-Id: I2a835c6865b6c804231d852953ea84eeccef35a3
BUG: 849630
Signed-off-by: Anand Avati <avati@redhat.com>
Reviewed-on: http://review.gluster.org/6730
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Raghavendra Bhat <raghavendra@redhat.com>
Reviewed-by: Krishnan Parthasarathi <kparthas@redhat.com>
-rw-r--r-- | xlators/features/locks/src/entrylk.c | 7 | ||||
-rw-r--r-- | xlators/features/locks/src/inodelk.c | 1 |
2 files changed, 5 insertions, 3 deletions
diff --git a/xlators/features/locks/src/entrylk.c b/xlators/features/locks/src/entrylk.c index 208bc140e7a..c176306fe4f 100644 --- a/xlators/features/locks/src/entrylk.c +++ b/xlators/features/locks/src/entrylk.c @@ -371,7 +371,6 @@ __lock_entrylk (xlator_t *this, pl_inode_t *pinode, pl_entry_lock_t *lock, __pl_entrylk_ref (lock); gettimeofday (&lock->granted_time, NULL); list_add (&lock->domain_list, &dom->entrylk_list); - lock->frame = NULL; ret = 0; out: @@ -576,10 +575,12 @@ pl_common_entrylk (call_frame_t *frame, xlator_t *this, reqlock->pinode = pinode; ret = __lock_entrylk (this, pinode, reqlock, nonblock, dom); - if (ret == 0) + if (ret == 0) { + reqlock->frame = NULL; op_ret = 0; - else + } else { op_errno = -ret; + } if (ctx && (!ret || !nonblock)) list_add (&reqlock->client_list, diff --git a/xlators/features/locks/src/inodelk.c b/xlators/features/locks/src/inodelk.c index 969b67a61db..e7093e60ed5 100644 --- a/xlators/features/locks/src/inodelk.c +++ b/xlators/features/locks/src/inodelk.c @@ -478,6 +478,7 @@ pl_inode_setlk (xlator_t *this, pl_ctx_t *ctx, pl_inode_t *pl_inode, if (lock->fl_type != F_UNLCK) { ret = __lock_inodelk (this, pl_inode, lock, can_block, dom); if (ret == 0) { + lock->frame = NULL; gf_log (this->name, GF_LOG_TRACE, "%s (pid=%d) (lk-owner=%s) %"PRId64" - %"PRId64" => OK", lock->fl_type == F_UNLCK ? "Unlock" : "Lock", |