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

Reply via email to