From 728de5be7ce2975efb59bb5928fd7261d5ec7760 Mon Sep 17 00:00:00 2001 From: Krishnan Parthasarathi Date: Thu, 15 Dec 2011 17:38:05 +0530 Subject: locks: Made dump locks formatting more 'readable'. Also, Added inode's path to dump locks. Added basename to entrylk dump output. Added whence field of range locks to dump output. Change-Id: Ifd3f8b585a52de7ff68cd54506619ac3eaedeecc BUG: 789858 Signed-off-by: Krishnan Parthasarathi Reviewed-on: http://review.gluster.com/798 Tested-by: Gluster Build System Reviewed-by: Vijay Bellur --- xlators/features/locks/src/common.h | 16 +++++++++++++++ xlators/features/locks/src/posix.c | 41 +++++++++++++++++++++---------------- 2 files changed, 39 insertions(+), 18 deletions(-) (limited to 'xlators/features/locks') diff --git a/xlators/features/locks/src/common.h b/xlators/features/locks/src/common.h index 0c0dd22e7..a8e1d3d42 100644 --- a/xlators/features/locks/src/common.h +++ b/xlators/features/locks/src/common.h @@ -21,6 +21,22 @@ #define __COMMON_H__ #include "lkowner.h" +/*dump locks format strings */ +#define RANGE_FMT "type=%s, whence=%hd, start=%llu, len=%llu" +#define ENTRY_FMT "type=%s on basename=%s" +#define DUMP_GEN_FMT "pid = %llu, owner=%s, transport=%p, " +#define GRNTD_AT "granted at %s" +#define BLKD_AT "blocked at %s" +#define DUMP_BLKD_FMT DUMP_GEN_FMT", "BLKD_AT +#define DUMP_GRNTD_FMT DUMP_GEN_FMT", "GRNTD_AT +#define DUMP_BLKD_GRNTD_FMT DUMP_GEN_FMT", "BLKD_AT", "GRNTD_AT +#define ENTRY_BLKD_FMT ENTRY_FMT", "DUMP_BLKD_FMT +#define ENTRY_GRNTD_FMT ENTRY_FMT", "DUMP_GRNTD_FMT +#define ENTRY_BLKD_GRNTD_FMT ENTRY_FMT", "DUMP_BLKD_GRNTD_FMT + +#define RANGE_BLKD_FMT RANGE_FMT", "DUMP_BLKD_FMT +#define RANGE_GRNTD_FMT RANGE_FMT", "DUMP_GRNTD_FMT +#define RANGE_BLKD_GRNTD_FMT RANGE_FMT", "DUMP_BLKD_GRNTD_FMT #define SET_FLOCK_PID(flock, lock) ((flock)->l_pid = lock->client_pid) posix_lock_t * diff --git a/xlators/features/locks/src/posix.c b/xlators/features/locks/src/posix.c index a1a56ab20..31522da24 100644 --- a/xlators/features/locks/src/posix.c +++ b/xlators/features/locks/src/posix.c @@ -1708,19 +1708,17 @@ pl_dump_lock (char *str, int size, struct gf_flock *flock, if (active) { if (blkd_time && *blkd_time == 0) { - snprintf (str, size, "type=%s, start=%llu, len=%llu, " - "pid=%llu, lk-owner=%s, transport=%p, " - "granted at %s", - type_str, (unsigned long long) flock->l_start, + snprintf (str, size, RANGE_GRNTD_FMT, + type_str, flock->l_whence, + (unsigned long long) flock->l_start, (unsigned long long) flock->l_len, (unsigned long long) flock->l_pid, lkowner_utoa (owner), trans, ctime (granted_time)); } else { - snprintf (str, size, "type=%s, start=%llu, len=%llu, " - "pid=%llu, lk-owner=%s, transport=%p, " - "blocked at %s, granted at %s", - type_str, (unsigned long long) flock->l_start, + snprintf (str, size, RANGE_BLKD_GRNTD_FMT, + type_str, flock->l_whence, + (unsigned long long) flock->l_start, (unsigned long long) flock->l_len, (unsigned long long) flock->l_pid, lkowner_utoa (owner), @@ -1728,9 +1726,9 @@ pl_dump_lock (char *str, int size, struct gf_flock *flock, } } else { - snprintf (str, size, "type=%s, start=%llu, len=%llu, pid=%llu, " - "lk-owner=%s, transport=%p, blocked at %s", - type_str, (unsigned long long) flock->l_start, + snprintf (str, size, RANGE_BLKD_FMT, + type_str, flock->l_whence, + (unsigned long long) flock->l_start, (unsigned long long) flock->l_len, (unsigned long long) flock->l_pid, lkowner_utoa (owner), @@ -1764,16 +1762,14 @@ __dump_entrylks (pl_inode_t *pl_inode) "xlator.feature.locks.lock-dump.domain.entrylk", "entrylk[%d](ACTIVE)", count ); if (lock->blkd_time.tv_sec == 0 && lock->blkd_time.tv_usec == 0) { - snprintf (tmp, 256," %s on %s pid = %llu, owner=%s, transport=%p," - " granted at %s", + snprintf (tmp, 256, ENTRY_GRNTD_FMT, lock->type == ENTRYLK_RDLCK ? "ENTRYLK_RDLCK" : "ENTRYLK_WRLCK", lock->basename, (unsigned long long) lock->client_pid, lkowner_utoa (&lock->owner), lock->trans, ctime (&lock->granted_time.tv_sec)); } else { - snprintf (tmp, 256," %s on %s pid = %llu, owner=%s, transport=%p," - " blocked at %s, granted at %s", + snprintf (tmp, 256, ENTRY_BLKD_GRNTD_FMT, lock->type == ENTRYLK_RDLCK ? "ENTRYLK_RDLCK" : "ENTRYLK_WRLCK", lock->basename, (unsigned long long) lock->client_pid, @@ -1792,8 +1788,7 @@ __dump_entrylks (pl_inode_t *pl_inode) gf_proc_dump_build_key(key, "xlator.feature.locks.lock-dump.domain.entrylk", "entrylk[%d](BLOCKED)", count ); - snprintf (tmp, 256," %s on %s pid = %llu, owner=%s, transport=%p," - " blocked at %s", + snprintf (tmp, 256, ENTRY_BLKD_FMT, lock->type == ENTRYLK_RDLCK ? "ENTRYLK_RDLCK" : "ENTRYLK_WRLCK", lock->basename, (unsigned long long) lock->client_pid, @@ -1936,6 +1931,7 @@ pl_dump_inode_priv (xlator_t *this, inode_t *inode) int ret = -1; uint64_t tmp_pl_inode = 0; pl_inode_t *pl_inode = NULL; + char *pathname = NULL; int count = 0; @@ -1955,6 +1951,12 @@ pl_dump_inode_priv (xlator_t *this, inode_t *inode) gf_proc_dump_add_section("xlator.features.locks.%s.inode", this->name); + /*We are safe to call __inode_path since we have the + * inode->table->lock */ + __inode_path (inode, NULL, &pathname); + if (pathname) + gf_proc_dump_write ("path", "%s", pathname); + gf_proc_dump_write("mandatory", "%d", pl_inode->mandatory); count = get_entrylk_count (this, inode); @@ -1965,7 +1967,7 @@ pl_dump_inode_priv (xlator_t *this, inode_t *inode) count = get_inodelk_count (this, inode); if (count) { - gf_proc_dump_write("inodlk-count", "%d", count); + gf_proc_dump_write("inodelk-count", "%d", count); dump_inodelks(pl_inode); } @@ -1976,6 +1978,9 @@ pl_dump_inode_priv (xlator_t *this, inode_t *inode) } out: + if (pathname) + GF_FREE (pathname); + return ret; } -- cgit