Patchwork ext3: Count journal as bsddf overhead in ext3_statfs

login
register
mail settings
Submitter Eric Sandeen
Date Oct. 15, 2013, 11:45 p.m.
Message ID <525DD38D.7060705@redhat.com>
Download mbox | patch
Permalink /patch/283800/
State Not Applicable
Headers show

Comments

Eric Sandeen - Oct. 15, 2013, 11:45 p.m.
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 <sandeen@redhat.com>
---


--
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
Jan Kara - Oct. 16, 2013, 12:29 p.m.
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 <sandeen@redhat.com>
  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);
>

Patch

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