diff options
author | Pranith Kumar K <pranithk@gluster.com> | 2012-07-28 12:18:50 +0530 |
---|---|---|
committer | Vijay Bellur <vbellur@redhat.com> | 2012-08-12 00:12:09 -0700 |
commit | aa4e7d04ff20e38182a62576595951d59524fff0 (patch) | |
tree | c4019fdf0e5e3d381205727deb23c98819e4ea6d /xlators/features/locks/src/inodelk.c | |
parent | d40d5a3a32a515ff29c71467a0f701e91ae99718 (diff) |
features/locks: Fix statedump code
RCA:
Taking blocking mutex/spin locks lead to dead locks
because of the locking order in statedumps. Also we
were asked to remove gf_logs if possible to avoid extra
cost in signal handlers.
Fix:
changed blocking mutes/spin locks to their non-blocking variants.
Removed gf_logs in locks xlator statedump code-path.
Tests:
State-dump success cases are working fine.
Triggered try-lock failures by putting statedumps in a while loop.
In parallel did chown of the same file in a while loop.
BUG: 843781
Change-Id: Iac9b75d79cd5e036cd3eafc1e106074e2c6b5c47
Signed-off-by: Pranith Kumar K <pranithk@gluster.com>
Reviewed-on: http://review.gluster.com/3752
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
Diffstat (limited to 'xlators/features/locks/src/inodelk.c')
-rw-r--r-- | xlators/features/locks/src/inodelk.c | 27 |
1 files changed, 1 insertions, 26 deletions
diff --git a/xlators/features/locks/src/inodelk.c b/xlators/features/locks/src/inodelk.c index a2e65d55fc3..37d42dc0830 100644 --- a/xlators/features/locks/src/inodelk.c +++ b/xlators/features/locks/src/inodelk.c @@ -695,7 +695,7 @@ pl_finodelk (call_frame_t *frame, xlator_t *this, } -static int32_t +int32_t __get_inodelk_count (xlator_t *this, pl_inode_t *pl_inode) { int32_t count = 0; @@ -704,34 +704,9 @@ __get_inodelk_count (xlator_t *this, pl_inode_t *pl_inode) list_for_each_entry (dom, &pl_inode->dom_list, inode_list) { list_for_each_entry (lock, &dom->inodelk_list, list) { - - gf_log (this->name, GF_LOG_DEBUG, - " XATTR DEBUG" - " domain: %s %s (pid=%d) (lk-owner=%s) %"PRId64" - %"PRId64" " - "state = Active", - dom->domain, - lock->fl_type == F_UNLCK ? "Unlock" : "Lock", - lock->client_pid, - lkowner_utoa (&lock->owner), - lock->user_flock.l_start, - lock->user_flock.l_len); - count++; } - list_for_each_entry (lock, &dom->blocked_inodelks, blocked_locks) { - - gf_log (this->name, GF_LOG_DEBUG, - " XATTR DEBUG" - " domain: %s %s (pid=%d) (lk-owner=%s) %"PRId64" - %"PRId64" " - "state = Blocked", - dom->domain, - lock->fl_type == F_UNLCK ? "Unlock" : "Lock", - lock->client_pid, - lkowner_utoa (&lock->owner), - lock->user_flock.l_start, - lock->user_flock.l_len); - count++; } |