On 5/8/25 4:19 AM, Chao Yu wrote: >> @@ -2645,21 +2603,11 @@ static int f2fs_remount(struct super_block *sb, int >> *flags, char *data) >> >> default_options(sbi, true); >> >> - memset(&fc, 0, sizeof(fc)); >> - memset(&ctx, 0, sizeof(ctx)); >> - fc.fs_private = &ctx; >> - fc.purpose = FS_CONTEXT_FOR_RECONFIGURE; >> - >> - /* parse mount options */ >> - err = parse_options(&fc, data); >> - if (err) >> - goto restore_opts; > There is a retry flow during f2fs_fill_super(), I intenionally inject a > fault into f2fs_fill_super() to trigger the retry flow, it turns out that > mount option may be missed w/ below testcase:
I never did understand that retry logic (introduced in ed2e621a95d long ago). What errors does it expect to be able to retry, with success? Anyway ... Can you show me (as a patch) exactly what you did to trigger the retry, just so we are looking at the same thing? > - mkfs.f2fs -f -O encrypt /dev/vdb > - mount -o test_dummy_encryption /dev/vdb /mnt/f2fs/ > : return success > - dmesg -c > > [ 83.619982] f2fs_fill_super, retry_cnt:1 > [ 83.620914] F2FS-fs (vdb): Test dummy encryption mode enabled > [ 83.668380] f2fs_fill_super, retry_cnt:0 > [ 83.671601] F2FS-fs (vdb): Mounted with checkpoint version = 7a8dfca5 > > - mount|grep f2fs > /dev/vdb on /mnt/f2fs type f2fs > (rw,relatime,lazytime,background_gc=on,nogc_merge, > discard,discard_unit=block,user_xattr,inline_xattr,acl,inline_data,inline_dentry, > flush_merge,barrier,extent_cache,mode=adaptive,active_logs=6,alloc_mode=reuse, > checkpoint_merge,fsync_mode=posix,memory=normal,errors=continue) > > The reason may be it has cleared F2FS_CTX_INFO(ctx).dummy_enc_policy in > f2fs_apply_test_dummy_encryption(). > > static void f2fs_apply_test_dummy_encryption(struct fs_context *fc, > struct super_block *sb) > { > struct f2fs_fs_context *ctx = fc->fs_private; > struct f2fs_sb_info *sbi = F2FS_SB(sb); > > if (!fscrypt_is_dummy_policy_set(&F2FS_CTX_INFO(ctx).dummy_enc_policy) > || > /* if already set, it was already verified to be the same */ > fscrypt_is_dummy_policy_set(&F2FS_OPTION(sbi).dummy_enc_policy)) > return; > F2FS_OPTION(sbi).dummy_enc_policy = F2FS_CTX_INFO(ctx).dummy_enc_policy; > memset(&F2FS_CTX_INFO(ctx).dummy_enc_policy, 0, > sizeof(F2FS_CTX_INFO(ctx).dummy_enc_policy)); > f2fs_warn(sbi, "Test dummy encryption mode enabled"); > } > > Can we save old mount_info from sbi or ctx from fc, and try to recover it > before we retry mount flow? I'll have to take more time to understand this concern. But thanks for pointing it out. -Eric > Thanks, _______________________________________________ Linux-f2fs-devel mailing list Linux-f2fs-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel