diff options
author | Srinivas Eeda <srinivas.eeda@oracle.com> | 2009-06-03 17:02:56 -0700 |
---|---|---|
committer | Joel Becker <joel.becker@oracle.com> | 2009-06-03 19:14:31 -0700 |
commit | 15633a220ffe74fc61bc8117e6a89a494011ea3d (patch) | |
tree | 18bf3b92b4ec3988f78c5e07b1471b8f89a2f474 /fs/ocfs2 | |
parent | 83273932fbefb6ceef9c0b82ac4d23900728f4d9 (diff) |
ocfs2 patch to track delayed orphan scan timer statistics
Patch to track delayed orphan scan timer statistics.
Modifies ocfs2_osb_dump to print the following:
Orphan Scan=> Local: 10 Global: 21 Last Scan: 67 seconds ago
Signed-off-by: Srinivas Eeda <srinivas.eeda@oracle.com>
Signed-off-by: Joel Becker <joel.becker@oracle.com>
Diffstat (limited to 'fs/ocfs2')
-rw-r--r-- | fs/ocfs2/journal.c | 4 | ||||
-rw-r--r-- | fs/ocfs2/ocfs2.h | 4 | ||||
-rw-r--r-- | fs/ocfs2/super.c | 8 |
3 files changed, 15 insertions, 1 deletions
diff --git a/fs/ocfs2/journal.c b/fs/ocfs2/journal.c index 44ed768782ed..4a3b9e6b31ad 100644 --- a/fs/ocfs2/journal.c +++ b/fs/ocfs2/journal.c @@ -1900,6 +1900,8 @@ void ocfs2_queue_orphan_scan(struct ocfs2_super *osb) * number and update LVB so other node will skip the scan for a while */ seqno++; + os->os_count++; + os->os_scantime = CURRENT_TIME; unlock: ocfs2_orphan_scan_unlock(osb, seqno, DLM_LOCK_EX); out: @@ -1939,6 +1941,8 @@ int ocfs2_orphan_scan_init(struct ocfs2_super *osb) os = &osb->osb_orphan_scan; os->os_osb = osb; + os->os_count = 0; + os->os_scantime = CURRENT_TIME; mutex_init(&os->os_lock); INIT_DELAYED_WORK(&os->os_orphan_scan_work, diff --git a/fs/ocfs2/ocfs2.h b/fs/ocfs2/ocfs2.h index 1fde52c96d25..ab285be023b2 100644 --- a/fs/ocfs2/ocfs2.h +++ b/fs/ocfs2/ocfs2.h @@ -156,7 +156,9 @@ struct ocfs2_orphan_scan { struct ocfs2_super *os_osb; struct ocfs2_lock_res os_lockres; /* lock to synchronize scans */ struct delayed_work os_orphan_scan_work; - u32 os_seqno; /* incremented on every scan */ + struct timespec os_scantime; /* time this node ran the scan */ + u32 os_count; /* tracks node specific scans */ + u32 os_seqno; /* tracks cluster wide scans */ }; struct ocfs2_dlm_debug { diff --git a/fs/ocfs2/super.c b/fs/ocfs2/super.c index 44ac27e2d1f5..d05f3caec410 100644 --- a/fs/ocfs2/super.c +++ b/fs/ocfs2/super.c @@ -208,6 +208,7 @@ static int ocfs2_osb_dump(struct ocfs2_super *osb, char *buf, int len) int i; struct ocfs2_cluster_connection *cconn = osb->cconn; struct ocfs2_recovery_map *rm = osb->recovery_map; + struct ocfs2_orphan_scan *os; out += snprintf(buf + out, len - out, "%10s => Id: %-s Uuid: %-s Gen: 0x%X Label: %-s\n", @@ -309,6 +310,13 @@ static int ocfs2_osb_dump(struct ocfs2_super *osb, char *buf, int len) i, osb->slot_recovery_generations[i]); } + os = &osb->osb_orphan_scan; + out += snprintf(buf + out, len - out, "Orphan Scan=> "); + out += snprintf(buf + out, len - out, "Local: %u Global: %u ", + os->os_count, os->os_seqno); + out += snprintf(buf + out, len - out, " Last Scan: %lu seconds ago\n", + (get_seconds() - os->os_scantime.tv_sec)); + return out; } |