diff mbox

[1/2] dumpe2fs: dump blocks count used by super and GDT

Message ID 1321405328-5298-1-git-send-email-xiaoqiangnk@gmail.com
State Rejected, archived
Headers show

Commit Message

Yongqiang Yang Nov. 16, 2011, 1:02 a.m. UTC
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@gmail.com>
---
 misc/dumpe2fs.c |   32 ++++++++++++++++++++++++++++++++
 1 files changed, 32 insertions(+), 0 deletions(-)

Comments

Theodore Ts'o Nov. 20, 2011, 4:43 a.m. UTC | #1
On Wed, Nov 16, 2011 at 09:02:07AM +0800, Yongqiang Yang wrote:
> 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@gmail.com>

I'm not convinced this is sufficiently useful to be worth adding to
dumpe2fs.  How many users really need to know this?

	       	    	  	      - Ted
--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Yongqiang Yang Nov. 20, 2011, 7:08 a.m. UTC | #2
On Sun, Nov 20, 2011 at 12:43 PM, Ted Ts'o <tytso@mit.edu> wrote:
> On Wed, Nov 16, 2011 at 09:02:07AM +0800, Yongqiang Yang wrote:
>> 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@gmail.com>
>
> I'm not convinced this is sufficiently useful to be worth adding to
> dumpe2fs.  How many users really need to know this?
Some users are confused by static metadata blocks allocated by extN
file systems.   Blocks used as inode tables and bitmaps can be
calculated by data from dumpe2fs.  However, blocks taken up by super
blocks and GDT can not be calculated.   So this patch prints the
number of blocks used by super blocks and GDT.   IMHO, it is useful
for some users who know little about extN.   I met several users who
ask why a fresh ext4 has used so many blocks compared to others.    I
know most of them are used as inode tables.   Without this patch, we
can explain the problem.   I just think we can explain the problem
with explicit numbers with the patch.


Yongqiang.
>
>                                      - Ted
>
Theodore Ts'o Nov. 20, 2011, 6:28 p.m. UTC | #3
On Sun, Nov 20, 2011 at 03:08:23PM +0800, Yongqiang Yang wrote:
> Some users are confused by static metadata blocks allocated by extN
> file systems.   Blocks used as inode tables and bitmaps can be
> calculated by data from dumpe2fs.  However, blocks taken up by super
> blocks and GDT can not be calculated.   So this patch prints the
> number of blocks used by super blocks and GDT.   IMHO, it is useful
> for some users who know little about extN.   I met several users who
> ask why a fresh ext4 has used so many blocks compared to others.    I
> know most of them are used as inode tables.   Without this patch, we
> can explain the problem.   I just think we can explain the problem
> with explicit numbers with the patch.

The reason most of the users are complaining is not because of
superblocks and the GDT blocks, however.  It's really the inode table
blocks (somewhat), and especially, the 5% reserved blocks for root.
This is the sort of thing that's better explained in a FAQ entry,
since most users are also not likely to use dumpe2fs.

And if they are going to use dumpe2fs, I'd much rather the FAQ entry
explain it and they can then look at the details of the block layout
in the dumpe2fs output (i."e. dumpe2fs /dev/hdXX | grep superblock")
if they really need to count the number of superblocks.

   	       	       	     	 	   - Ted
--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

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);