From: Eric Sandeen Date: Tue, 25 Nov 2014 21:27:44 +0000 (-0500) Subject: ext4: don't count external journal blocks as overhead X-Git-Tag: v3.19-rc1~109^2~8 X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=b003b52496b9bea9b186b127aea730b79d2a83bd;p=~emulex%2Finfiniband.git 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. Signed-off-by: Eric Sandeen Signed-off-by: Theodore Ts'o --- diff --git a/fs/ext4/super.c b/fs/ext4/super.c index 3bd2982da36..f8ad756bb85 100644 --- a/fs/ext4/super.c +++ b/fs/ext4/super.c @@ -3331,8 +3331,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;