Re: [PATCH 2/2] ext4: preserve SB_I_VERSION on remount
From: Jan Kara
Date: Thu Jul 03 2025 - 12:42:07 EST
On Thu 03-07-25 15:39:03, libaokun@xxxxxxxxxxxxxxx wrote:
> From: Baokun Li <libaokun1@xxxxxxxxxx>
>
> IMA testing revealed that after an ext4 remount, file accesses triggered
> full measurements even without modifications, instead of skipping as
> expected when i_version is unchanged.
>
> Debugging showed `SB_I_VERSION` was cleared in reconfigure_super() during
> remount due to commit 1ff20307393e ("ext4: unconditionally enable the
> i_version counter") removing the fix from commit 960e0ab63b2e ("ext4: fix
> i_version handling on remount").
>
> To rectify this, `SB_I_VERSION` is always set for `fc->sb_flags` in
> ext4_init_fs_context(), instead of `sb->s_flags` in __ext4_fill_super(),
> ensuring it persists across all mounts.
>
> Fixes: 1ff20307393e ("ext4: unconditionally enable the i_version counter")
> Signed-off-by: Baokun Li <libaokun1@xxxxxxxxxx>
Looks good. Feel free to add:
Reviewed-by: Jan Kara <jack@xxxxxxx>
Honza
> ---
> fs/ext4/super.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/fs/ext4/super.c b/fs/ext4/super.c
> index 9203518786e4..ed1b36bd51c8 100644
> --- a/fs/ext4/super.c
> +++ b/fs/ext4/super.c
> @@ -1998,6 +1998,9 @@ int ext4_init_fs_context(struct fs_context *fc)
> fc->fs_private = ctx;
> fc->ops = &ext4_context_ops;
>
> + /* i_version is always enabled now */
> + fc->sb_flags |= SB_I_VERSION;
> +
> return 0;
> }
>
> @@ -5316,9 +5319,6 @@ static int __ext4_fill_super(struct fs_context *fc, struct super_block *sb)
> sb->s_flags = (sb->s_flags & ~SB_POSIXACL) |
> (test_opt(sb, POSIX_ACL) ? SB_POSIXACL : 0);
>
> - /* i_version is always enabled now */
> - sb->s_flags |= SB_I_VERSION;
> -
> /* HSM events are allowed by default. */
> sb->s_iflags |= SB_I_ALLOW_HSM;
>
> --
> 2.46.1
>
--
Jan Kara <jack@xxxxxxxx>
SUSE Labs, CR