> On Jun 14, 2021, at 3:28 PM, Jan Kara <jack@xxxxxxx> wrote: > > When adding or removing journal from a filesystem, we also need to add / > remove journal blocks from overhead stored in the superblock. Otherwise > total number of blocks in the filesystem as reported by statfs(2) need > not match reality and could lead to odd results like negative number of > used blocks reported by df(1). > > Signed-off-by: Jan Kara <jack@xxxxxxx> You could add: Fixes: 9046b4dfd0ce ("mke2fs: set overhead in super block") and Reviewed-by: Andreas Dilger <adilger@xxxxxxxxx> That also makes me wonder if resize2fs also needs to recalculate or invalidate the s_overhead_clusters field when adding new block groups. It *looks* like that is done correctly in adjust_fs_info() already? Cheers, Andreas > --- > misc/tune2fs.c | 10 ++++++++-- > 1 file changed, 8 insertions(+), 2 deletions(-) > > diff --git a/misc/tune2fs.c b/misc/tune2fs.c > index 4d4cf5a13384..2f6858abda32 100644 > --- a/misc/tune2fs.c > +++ b/misc/tune2fs.c > @@ -396,6 +396,8 @@ static errcode_t remove_journal_inode(ext2_filsys fs) > _("while clearing journal inode")); > return retval; > } > + fs->super->s_overhead_clusters -= > + EXT2FS_NUM_B2C(fs, EXT2_I_SIZE(&inode) / fs->blocksize); > memset(&inode, 0, sizeof(inode)); > ext2fs_mark_bb_dirty(fs); > fs->flags &= ~EXT2_FLAG_SUPER_ONLY; > @@ -1663,8 +1665,12 @@ static int add_journal(ext2_filsys fs) > com_err(program_name, retval, "%s", > _("\n\twhile trying to create journal file")); > return retval; > - } else > - fputs(_("done\n"), stdout); > + } > + fs->super->s_overhead_clusters += EXT2FS_NUM_B2C(fs, > + jparams.num_journal_blocks + jparams.num_fc_blocks); > + ext2fs_mark_super_dirty(fs); > + fputs(_("done\n"), stdout); > + > /* > * If the filesystem wasn't mounted, we need to force > * the block group descriptors out. > -- > 2.26.2 > Cheers, Andreas
Attachment:
signature.asc
Description: Message signed with OpenPGP