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 <sandeen@redhat.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
                        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;