ext4: use journal inode to determine journal overhead
PATCH RESEND 2/2 ext4: use journal inode to determine journal overhead
When a file system contains an internal journal that has not been loaded, use the journal inode's i_size field to determine its contribution to the file system's overhead. (The journal's j_maxlen field is normally used to determine its size, but it's unavailable when the journal has not been loaded.)
Signed-off-by Eric Whitney <[email protected]>
--- fs/ext4/super.c | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-)
fs/ext4/super.c +7 -1
@@ -3210,6 +3210,8 @@ int ext4_calculate_overhead(struct super_block *sb) {struct ext4_sb_info *sbi =EXT4_SB (sb);struct ext4_super_block *es = sbi->s_es; +struct inode *j_inode; +unsigned int j_blocks, j_inum =le32_to_cpu (es->s_journal_inum);ext4_group_t i, ngroups =ext4_get_groups_count (sb);ext4_fsblk_t overhead =0 ;char *buf = (char *)get_zeroed_page (GFP_NOFS );
@@ -3240,10 +3242,23 @@ int ext4_calculate_overhead(struct super_block *sb)memset (buf,0 ,PAGE_SIZE );cond_resched (); } -/* Add the internal journal blocks as well */ + +/* +* Add the internal journal blocks whether the journal has been +* loaded or not +*/ if (sbi->s_journal && !sbi->journal_bdev) overhead +=EXT4_NUM_B2C (sbi, sbi->s_journal->j_maxlen);
Quoted 7 lines · Eric Whitney
When a file system contains an internal journal that has not been loaded, use the journal inode's
i_sizefield to determine its contribution to the file system's overhead. (The journal'sj_maxlenfield is normally used to determine its size, but it's unavailable when the journal has not been loaded.)Signed-off-by Eric Whitney <[email protected]>
Thanks, applied.
- Ted