2012-11-28 20:51:22

by Eric Sandeen

[permalink] [raw]
Subject: [PATCH] ext4: include journal blocks in df overhead calcs

To more accurately calculate overhead for "bsd" style
df reporting, we should count the journal blocks as
overhead as well.

Signed-off-by: Eric Sandeen <[email protected]>
Tested-by: Eric Whitney <[email protected]>
---

I don't think this needs any special treatment for
big allocclusters, does it? df still reports
blocks?

diff --git a/fs/ext4/super.c b/fs/ext4/super.c
index 80928f7..b441daa 100644
--- a/fs/ext4/super.c
+++ b/fs/ext4/super.c
@@ -3229,6 +3229,10 @@ int ext4_calculate_overhead(struct super_block *sb)
memset(buf, 0, PAGE_SIZE);
cond_resched();
}
+ /* Add the journal blocks as well */
+ if (sbi->s_journal)
+ overhead += sbi->s_journal->j_maxlen;
+
sbi->s_overhead = overhead;
smp_wmb();
free_page((unsigned long) buf);


2012-11-28 21:48:25

by Eric Sandeen

[permalink] [raw]
Subject: [PATCH V2] ext4: include journal blocks in df overhead calcs

To more accurately calculate overhead for "bsd" style
df reporting, we should count the journal blocks as
overhead as well.

Signed-off-by: Eric Sandeen <[email protected]>
Tested-by: Eric Whitney <[email protected]>
---

V2: I guess s_overhead _is_ in clusters, so do
that conversion after all. Ted, if I'm wrong, you
can pick the other patch ;)

Editorial/soapbox:

TBH it's hard to keep track of what fields are
now stored as "clusters" not blocks . . .

Esp. when we do things like use local vars named "blk" -

blks = count_overhead(sb, i, buf);

but count_overhead() returns *clusters*, so it's
really quite confusing to keep it all straight.

diff --git a/fs/ext4/super.c b/fs/ext4/super.c
index 80928f7..b441daa 100644
--- a/fs/ext4/super.c
+++ b/fs/ext4/super.c
@@ -3229,6 +3229,10 @@ int ext4_calculate_overhead(struct super_block *sb)
memset(buf, 0, PAGE_SIZE);
cond_resched();
}
+ /* Add the journal blocks as well */
+ if (sbi->s_journal)
+ overhead += EXT4_B2C(sbi, sbi->s_journal->j_maxlen);
+
sbi->s_overhead = overhead;
smp_wmb();
free_page((unsigned long) buf);


2012-12-25 18:58:06

by Theodore Ts'o

[permalink] [raw]
Subject: Re: [PATCH V2] ext4: include journal blocks in df overhead calcs

On Wed, Nov 28, 2012 at 03:48:24PM -0600, Eric Sandeen wrote:
> To more accurately calculate overhead for "bsd" style
> df reporting, we should count the journal blocks as
> overhead as well.
>
> Signed-off-by: Eric Sandeen <[email protected]>
> Tested-by: Eric Whitney <[email protected]>

Thanks, applied.

- Ted