From: Baokun Li Date: Tue, 19 Aug 2025 06:18:03 +0000 (+0800) Subject: tmpfs: preserve SB_I_VERSION on remount X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=63ec0c26b682ca235953490dfa82b8fa4d4ab4a0;p=users%2Fhch%2Fmisc.git tmpfs: preserve SB_I_VERSION on remount Now tmpfs enables i_version by default and tmpfs does not modify it. But SB_I_VERSION can also be modified via sb_flags, and reconfigure_super() always overwrites the existing flags with the latest ones. This means that if tmpfs is remounted without specifying iversion, the default i_version will be unexpectedly disabled. To ensure iversion remains enabled, SB_I_VERSION is now always set for fc->sb_flags in shmem_init_fs_context(), instead of for sb->s_flags in shmem_fill_super(). Link: https://lkml.kernel.org/r/20250819061803.1496443-1-libaokun@huaweicloud.com Fixes: 36f05cab0a2c ("tmpfs: add support for an i_version counter") Signed-off-by: Baokun Li Reviewed-by: Baolin Wang Tested-by: Baolin Wang Reviewed-by: Jeff Layton Acked-by: Hugh Dickins Signed-off-by: Andrew Morton --- diff --git a/mm/shmem.c b/mm/shmem.c index d945de3a7f0e..13cc51df3893 100644 --- a/mm/shmem.c +++ b/mm/shmem.c @@ -5081,7 +5081,7 @@ static int shmem_fill_super(struct super_block *sb, struct fs_context *fc) sb->s_flags |= SB_NOUSER; } sb->s_export_op = &shmem_export_ops; - sb->s_flags |= SB_NOSEC | SB_I_VERSION; + sb->s_flags |= SB_NOSEC; #if IS_ENABLED(CONFIG_UNICODE) if (!ctx->encoding && ctx->strict_encoding) { @@ -5385,6 +5385,9 @@ int shmem_init_fs_context(struct fs_context *fc) fc->fs_private = ctx; fc->ops = &shmem_fs_context_ops; +#ifdef CONFIG_TMPFS + fc->sb_flags |= SB_I_VERSION; +#endif return 0; }