ext4: don't count external journal blocks as overhead
PATCH 1/1 ext4: don't count external journal blocks as overhead
This was fixed for ext3 with:
e6d8fb3 ext3: Count internal journal as bsddf overhead in ext3_statfs
but was never fixed for ext4.
With a large external journal and no used disk blocks, df comes out negative without this, as journal blocks are added to the overhead & subtracted from used blocks unconditionally.
---
ps: since this is stored in the on-disk superblock now, I'm not sure how to fix up old filesystems, or if it matters much.
fs/ext4/super.c +2 -2
@@ -3338,8 +3338,8 @@ 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) +/* Add the internal journal blocks as well */ +if (sbi->s_journal && !sbi->journal_bdev) overhead +=EXT4_NUM_B2C (sbi, sbi->s_journal->j_maxlen); sbi->s_overhead = overhead;
Quoted 11 lines · Eric Sandeen
This was fixed for ext3 with:
e6d8fb3 ext3: Count internal journal as bsddf overhead in
ext3_statfsbut was never fixed for ext4.
With a large external journal and no used disk blocks, df comes out negative without this, as journal blocks are added to the overhead & subtracted from used blocks unconditionally.
Signed-off-by Eric Sandeen <[email protected]>
Thanks, applied.
- Ted