2013-10-15 23:45:21

by Eric Sandeen

[permalink] [raw]
Subject: [PATCH] ext3: Count journal as bsddf overhead in ext3_statfs

ext4 counts journal space as bsddf overhead, but ext3 does not.

For some reason when I patched ext4 I thought I should leave
ext3 alone, but frankly it makes more sense to fix it, I think.

Otherwise we get inconsistent behavior from ext3 under ext3.ko,
and ext3 under ext4.ko, which is not at all desirable...

This is testable by xfstests shared/289, though it will need
modification because it currently special-cases ext3.

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

diff --git a/fs/ext3/super.c b/fs/ext3/super.c
index c50c761..37fd31e 100644
--- a/fs/ext3/super.c
+++ b/fs/ext3/super.c
@@ -2825,6 +2825,10 @@ static int ext3_statfs (struct dentry * dentry, struct kstatfs * buf)
* bitmap, and an inode table.
*/
overhead += ngroups * (2 + sbi->s_itb_per_group);
+
+ /* Add the journal blocks as well */
+ overhead += sbi->s_journal->j_maxlen;
+
sbi->s_overhead_last = overhead;
smp_wmb();
sbi->s_blocks_last = le32_to_cpu(es->s_blocks_count);



2013-10-16 12:29:50

by Jan Kara

[permalink] [raw]
Subject: Re: [PATCH] ext3: Count journal as bsddf overhead in ext3_statfs

On Tue 15-10-13 18:45:17, Eric Sandeen wrote:
> ext4 counts journal space as bsddf overhead, but ext3 does not.
>
> For some reason when I patched ext4 I thought I should leave
> ext3 alone, but frankly it makes more sense to fix it, I think.
>
> Otherwise we get inconsistent behavior from ext3 under ext3.ko,
> and ext3 under ext4.ko, which is not at all desirable...
>
> This is testable by xfstests shared/289, though it will need
> modification because it currently special-cases ext3.
>
> Signed-off-by: Eric Sandeen <[email protected]>
OK, fair enough. Applied to my tree.

Honza

> ---
>
> diff --git a/fs/ext3/super.c b/fs/ext3/super.c
> index c50c761..37fd31e 100644
> --- a/fs/ext3/super.c
> +++ b/fs/ext3/super.c
> @@ -2825,6 +2825,10 @@ static int ext3_statfs (struct dentry * dentry, struct kstatfs * buf)
> * bitmap, and an inode table.
> */
> overhead += ngroups * (2 + sbi->s_itb_per_group);
> +
> + /* Add the journal blocks as well */
> + overhead += sbi->s_journal->j_maxlen;
> +
> sbi->s_overhead_last = overhead;
> smp_wmb();
> sbi->s_blocks_last = le32_to_cpu(es->s_blocks_count);
>
--
Jan Kara <[email protected]>
SUSE Labs, CR