aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSrinivas Eeda <srinivas.eeda@oracle.com>2009-06-03 20:02:56 -0400
committerJoel Becker <joel.becker@oracle.com>2009-06-03 22:14:31 -0400
commit15633a220ffe74fc61bc8117e6a89a494011ea3d (patch)
tree18bf3b92b4ec3988f78c5e07b1471b8f89a2f474
parent83273932fbefb6ceef9c0b82ac4d23900728f4d9 (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>
-rw-r--r--fs/ocfs2/journal.c4
-rw-r--r--fs/ocfs2/ocfs2.h4
-rw-r--r--fs/ocfs2/super.c8
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)
1900 * number and update LVB so other node will skip the scan for a while 1900 * number and update LVB so other node will skip the scan for a while
1901 */ 1901 */
1902 seqno++; 1902 seqno++;
1903 os->os_count++;
1904 os->os_scantime = CURRENT_TIME;
1903unlock: 1905unlock:
1904 ocfs2_orphan_scan_unlock(osb, seqno, DLM_LOCK_EX); 1906 ocfs2_orphan_scan_unlock(osb, seqno, DLM_LOCK_EX);
1905out: 1907out:
@@ -1939,6 +1941,8 @@ int ocfs2_orphan_scan_init(struct ocfs2_super *osb)
1939 1941
1940 os = &osb->osb_orphan_scan; 1942 os = &osb->osb_orphan_scan;
1941 os->os_osb = osb; 1943 os->os_osb = osb;
1944 os->os_count = 0;
1945 os->os_scantime = CURRENT_TIME;
1942 mutex_init(&os->os_lock); 1946 mutex_init(&os->os_lock);
1943 1947
1944 INIT_DELAYED_WORK(&os->os_orphan_scan_work, 1948 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 {
156 struct ocfs2_super *os_osb; 156 struct ocfs2_super *os_osb;
157 struct ocfs2_lock_res os_lockres; /* lock to synchronize scans */ 157 struct ocfs2_lock_res os_lockres; /* lock to synchronize scans */
158 struct delayed_work os_orphan_scan_work; 158 struct delayed_work os_orphan_scan_work;
159 u32 os_seqno; /* incremented on every scan */ 159 struct timespec os_scantime; /* time this node ran the scan */
160 u32 os_count; /* tracks node specific scans */
161 u32 os_seqno; /* tracks cluster wide scans */
160}; 162};
161 163
162struct ocfs2_dlm_debug { 164struct 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)
208 int i; 208 int i;
209 struct ocfs2_cluster_connection *cconn = osb->cconn; 209 struct ocfs2_cluster_connection *cconn = osb->cconn;
210 struct ocfs2_recovery_map *rm = osb->recovery_map; 210 struct ocfs2_recovery_map *rm = osb->recovery_map;
211 struct ocfs2_orphan_scan *os;
211 212
212 out += snprintf(buf + out, len - out, 213 out += snprintf(buf + out, len - out,
213 "%10s => Id: %-s Uuid: %-s Gen: 0x%X Label: %-s\n", 214 "%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)
309 i, osb->slot_recovery_generations[i]); 310 i, osb->slot_recovery_generations[i]);
310 } 311 }
311 312
313 os = &osb->osb_orphan_scan;
314 out += snprintf(buf + out, len - out, "Orphan Scan=> ");
315 out += snprintf(buf + out, len - out, "Local: %u Global: %u ",
316 os->os_count, os->os_seqno);
317 out += snprintf(buf + out, len - out, " Last Scan: %lu seconds ago\n",
318 (get_seconds() - os->os_scantime.tv_sec));
319
312 return out; 320 return out;
313} 321}
314 322