Blocks count used by super and GDT is dumped so that users can know how many blocks are taken up by super and GDT. Signed-off-by: Yongqiang Yang <xiaoqiangnk@xxxxxxxxx> --- misc/dumpe2fs.c | 32 ++++++++++++++++++++++++++++++++ 1 files changed, 32 insertions(+), 0 deletions(-) diff --git a/misc/dumpe2fs.c b/misc/dumpe2fs.c index 5b114e9..2f9e87b 100644 --- a/misc/dumpe2fs.c +++ b/misc/dumpe2fs.c @@ -489,6 +489,32 @@ static void parse_extended_opts(const char *opts, blk64_t *superblock, free(buf); } +void print_super_gdt_blocks_count (ext2_filsys fs) { + blk64_t gdt_blks = 0, super_blks = 0; + blk64_t super_blk, old_desc_blk, new_desc_blk; + blk64_t old_desc_blocks; + unsigned int grp; + + if (fs->super->s_feature_incompat & EXT2_FEATURE_INCOMPAT_META_BG) + old_desc_blocks = fs->super->s_first_meta_bg; + else + old_desc_blocks = fs->desc_blocks; + + for (grp = 0; grp < fs->group_desc_count; grp++) { + ext2fs_super_and_bgd_loc2(fs, grp, &super_blk, + &old_desc_blk, &new_desc_blk, 0); + if (old_desc_blk) + gdt_blks += old_desc_blocks + + fs->super->s_reserved_gdt_blocks; + else if (new_desc_blk) + gdt_blks++; + super_blks += ((grp == 0) || super_blk); + } + printf("\nSuper blocks: %llu\n", super_blks); + printf("GDT blocks: %llu\n", gdt_blks); +} + + int main (int argc, char ** argv) { errcode_t retval; @@ -588,6 +614,12 @@ int main (int argc, char ** argv) EXT3_FEATURE_COMPAT_HAS_JOURNAL) && (fs->super->s_journal_inum != 0)) print_inline_journal_information(fs); + + /* + * Print block used by super and group descriptors. + */ + print_super_gdt_blocks_count(fs); + list_bad_blocks(fs, 0); if (header_only) { ext2fs_close (fs); -- 1.7.5.1 -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html