[Ocfs2-tools-devel] [PATCH 2/6] ocfs2: add debugfs.ocfs2 support to ocfs2 local alloc

Srinivas Eeda srinivas.eeda at oracle.com
Mon May 7 16:49:06 PDT 2012


This patch enhances debugfs.ocfs2 to dump new ocfs2 local alloc record
structure

Signed-off-by: Srinivas Eeda <srinivas.eeda at oracle.com>
---
 debugfs.ocfs2/dump.c |   46 ++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 42 insertions(+), 4 deletions(-)

diff --git a/debugfs.ocfs2/dump.c b/debugfs.ocfs2/dump.c
index 902d49e..e43cd90 100644
--- a/debugfs.ocfs2/dump.c
+++ b/debugfs.ocfs2/dump.c
@@ -27,6 +27,7 @@
 
 #include "main.h"
 #include "ocfs2/byteorder.h"
+#include "ocfs2/bitops.h"
 
 extern struct dbgfs_gbls gbls;
 
@@ -115,11 +116,48 @@ void dump_super_block(FILE *out, struct ocfs2_super_block *sb)
  * dump_local_alloc()
  *
  */
-void dump_local_alloc(FILE *out, struct ocfs2_local_alloc *loc)
+void dump_local_alloc(FILE *out, struct ocfs2_local_alloc *la)
 {
-	fprintf(out, "\tLocal Bitmap Offset: %u   Size: %u\n",
-	       loc->la_bm_off, loc->la_size);
+	__le32 i, j, clusters, used;
+	void *bitmap = OCFS2_LOCAL_ALLOC_BITMAP(la);
+
+	/*
+	 * If la_bm_off is set discontiguous localalloc is not enabled so we
+	 * dump the old way.
+	 */
+	if (la->la_bm_off || !(la->la_rec_count)) {
+		fprintf(out, "\tLocal Bitmap Offset: %u   Size: %u\n",
+			la->la_bm_off, la->la_size);
+		return;
+	}
+
+	if (!la->la_rec_count)
+		return;
 
+	clusters = used = 0;
+	bitmap = OCFS2_LOCAL_ALLOC_BITMAP(la);
+	for (i = 0; i < la->la_rec_count; i++)
+		for (j = 0;  j < la->la_recs[i].la_clusters; j++)
+			if (ocfs2_test_bit(clusters++, bitmap))
+				used++;
+
+	if (!clusters)
+		return;
+
+	fprintf(out, "\tSize: %u  Total Records: %u  Clusters: %u  Used: %u\n",
+	       la->la_size, la->la_rec_count, clusters, used);
+
+	clusters = 0;
+	fprintf(out, "\t##      Start     Clusters     Used      Free\n");
+	for (i = 0; i < la->la_rec_count; i++) {
+		used = 0;
+		for (j = 0; j < la->la_recs[i].la_clusters; j++)
+			if (ocfs2_test_bit(clusters++, bitmap))
+				used++;
+		fprintf(out, "\t%-4d    %-8d  %-6d       %-6d    %-6d\n",
+			i, la->la_recs[i].la_start, la->la_recs[i].la_clusters,
+			used, (la->la_recs[i].la_clusters - used));
+	}
 	return ;
 }
 
-- 
1.5.4.3




More information about the Ocfs2-tools-devel mailing list