[Ocfs2-tools-commits] smushran commits r1217 - trunk/extras
svn-commits@oss.oracle.com
svn-commits at oss.oracle.com
Wed Jul 19 12:35:26 CDT 2006
Author: smushran
Signed-off-by: mfasheh
Date: 2006-07-19 12:35:26 -0500 (Wed, 19 Jul 2006)
New Revision: 1217
Modified:
trunk/extras/find_allocation_fragments.c
Log:
extra tool find_allocation_fragments cleaned up
Signed-Off-by: mfasheh
Modified: trunk/extras/find_allocation_fragments.c
===================================================================
--- trunk/extras/find_allocation_fragments.c 2006-07-19 17:33:45 UTC (rev 1216)
+++ trunk/extras/find_allocation_fragments.c 2006-07-19 17:35:26 UTC (rev 1217)
@@ -43,6 +43,9 @@
uint16_t f_num_bits;
};
+#define FREE_BIT_STATS 200
+int free_bit_stats[FREE_BIT_STATS];
+
struct fragment largest = {0, };
static void print_usage(void)
@@ -74,30 +77,34 @@
static int print_group(struct ocfs2_group_desc *gd)
{
- int offset, start, end;
+ int offset, start, end, free;
int header = 0;
offset = 0;
while (find_next_region(gd, offset, &start, &end)) {
if (!header) {
- printf("Group: %"PRIu64": ", gd->bg_blkno);
+ printf("%-6s %-6s %-12s\n", "Free", "At Bit", "In Group");
header = 1;
}
- printf("%d,%d:%d ", start, end, end - start);
+ free = end - start;
+ printf("%-6u %-6u %"PRIu64"\n", free, start, gd->bg_blkno);
+
+ if (free < FREE_BIT_STATS)
+ free_bit_stats[free]++;
+
if (largest.f_num_bits < (end - start)) {
largest.f_group_blkno = gd->bg_blkno;
largest.f_chain = gd->bg_chain;
largest.f_bit_start = start;
- largest.f_num_bits = end - start;
+ largest.f_num_bits = free;
}
offset = end;
}
- if (header)
- printf("\n");
+ printf("\n");
return 0;
}
@@ -156,7 +163,7 @@
goto out_free;
}
- printf("Allocator Inode: %"PRIu64"\n", blkno);
+ printf("Allocator Inode: %"PRIu64"\n\n", blkno);
cl = &di->id2.i_chain;
@@ -183,6 +190,7 @@
char *device;
uint64_t inode;
ocfs2_filesys *fs;
+ int i;
initialize_ocfs_error_table();
@@ -194,6 +202,8 @@
device = argv[1];
inode = atoll(argv[2]);
+ memset(free_bit_stats, 0, sizeof(free_bit_stats));
+
ret = ocfs2_open(device, OCFS2_FLAG_RO, 0, 0, &fs);
if (ret) {
com_err(argv[0], ret,
@@ -208,6 +218,14 @@
goto out_close;
}
+ printf("Statistics:\n");
+ printf("%-6s %-6s\n", "Count", "Bits");
+ for (i = 1; i < FREE_BIT_STATS; ++i) {
+ if (free_bit_stats[i])
+ printf("%-6u %-6u\n", free_bit_stats[i], i);
+ }
+
+
out_close:
ret = ocfs2_close(fs);
if (ret) {
More information about the Ocfs2-tools-commits
mailing list