diff options
| author | Raghavendra Bhat <raghavendra@redhat.com> | 2012-10-04 20:55:30 +0530 | 
|---|---|---|
| committer | Anand Avati <avati@redhat.com> | 2012-10-11 18:12:11 -0700 | 
| commit | 7413b50220779d185efdb1d259c379a119a30a77 (patch) | |
| tree | 62d11b22bc9b41b0596577b1da320df833d4722e /xlators/performance/write-behind/src/write-behind.c | |
| parent | 68433db9ba07267c72d169b3ed4892e052e2eae2 (diff) | |
performance/write-behind: use try lock while taking statedumps
Change-Id: I690e8bf650d6e6e50899c2e17a79f42789e701eb
BUG: 843792
Signed-off-by: Raghavendra Bhat <raghavendra@redhat.com>
Reviewed-on: http://review.gluster.org/4036
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Amar Tumballi <amarts@redhat.com>
Reviewed-by: Anand Avati <avati@redhat.com>
Diffstat (limited to 'xlators/performance/write-behind/src/write-behind.c')
| -rw-r--r-- | xlators/performance/write-behind/src/write-behind.c | 11 | 
1 files changed, 9 insertions, 2 deletions
diff --git a/xlators/performance/write-behind/src/write-behind.c b/xlators/performance/write-behind/src/write-behind.c index 53506d948ba..ee533db2012 100644 --- a/xlators/performance/write-behind/src/write-behind.c +++ b/xlators/performance/write-behind/src/write-behind.c @@ -1734,6 +1734,7 @@ wb_inode_dump (xlator_t *this, inode_t *inode)          int32_t     ret                            = -1;          char       *path                           = NULL;          char       key_prefix[GF_DUMP_MAX_BUF_LEN] = {0, }; +        char       uuid_str[64] = {0,};          if ((inode == NULL) || (this == NULL)) {                  ret = 0; @@ -1769,14 +1770,20 @@ wb_inode_dump (xlator_t *this, inode_t *inode)          gf_proc_dump_write ("op_errno", "%d", wb_inode->op_errno); -        LOCK (&wb_inode->lock); +        ret = TRY_LOCK (&wb_inode->lock); +        if (!ret)          {                  if (!list_empty (&wb_inode->all)) {                          __wb_dump_requests (&wb_inode->all, key_prefix);                  } +                UNLOCK (&wb_inode->lock);          } -        UNLOCK (&wb_inode->lock); +        if (ret && wb_inode) +                gf_proc_dump_write ("Unable to dump the inode information", +                                    "(Lock acquisition failed) %p (gfid: %s)", +                                    wb_inode, +                                    uuid_utoa_r (inode->gfid, uuid_str));          ret = 0;  out:          return ret;  | 
