On 2019-5-24 18:43, Sahitya Tummala wrote:
> Add errors=panic mount option for debugging purpose. It can be
> set dynamically when the config option CONFIG_F2FS_CHECK_FS
> is not enabled.

Sahitya,

I remember Yunlei has a similar patch for this, could you rebase your code on
that patch, if Yunlei agrees, we can add Signed-off of him.

FYI

https://sourceforge.net/p/linux-f2fs/mailman/linux-f2fs-devel/thread/f6a0b1c3-4057-8b64-a419-4b2914d48394%40kernel.org/#msg36376331

Thanks,

> 
> Signed-off-by: Sahitya Tummala <[email protected]>
> ---
>  fs/f2fs/f2fs.h  |  9 +++++++--
>  fs/f2fs/super.c | 21 +++++++++++++++++++++
>  2 files changed, 28 insertions(+), 2 deletions(-)
> 
> diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h
> index 9b3d997..95adedb 100644
> --- a/fs/f2fs/f2fs.h
> +++ b/fs/f2fs/f2fs.h
> @@ -32,8 +32,12 @@
>  #define f2fs_bug_on(sbi, condition)                                  \
>       do {                                                            \
>               if (unlikely(condition)) {                              \
> -                     WARN_ON(1);                                     \
> -                     set_sbi_flag(sbi, SBI_NEED_FSCK);               \
> +                     if (test_opt(sbi, ERRORS_PANIC)) {              \
> +                             BUG_ON(condition);                      \
> +                     } else {                                        \
> +                             WARN_ON(1);                             \
> +                             set_sbi_flag(sbi, SBI_NEED_FSCK);       \
> +                     }                                               \
>               }                                                       \
>       } while (0)
>  #endif
> @@ -99,6 +103,7 @@ struct f2fs_fault_info {
>  #define F2FS_MOUNT_INLINE_XATTR_SIZE 0x00800000
>  #define F2FS_MOUNT_RESERVE_ROOT              0x01000000
>  #define F2FS_MOUNT_DISABLE_CHECKPOINT        0x02000000
> +#define F2FS_MOUNT_ERRORS_PANIC              0x04000000
>  
>  #define F2FS_OPTION(sbi)     ((sbi)->mount_opt)
>  #define clear_opt(sbi, option)       (F2FS_OPTION(sbi).opt &= 
> ~F2FS_MOUNT_##option)
> diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c
> index 912e261..7d6d96a 100644
> --- a/fs/f2fs/super.c
> +++ b/fs/f2fs/super.c
> @@ -137,6 +137,7 @@ enum {
>       Opt_fsync,
>       Opt_test_dummy_encryption,
>       Opt_checkpoint,
> +     Opt_errors,
>       Opt_err,
>  };
>  
> @@ -196,6 +197,7 @@ enum {
>       {Opt_fsync, "fsync_mode=%s"},
>       {Opt_test_dummy_encryption, "test_dummy_encryption"},
>       {Opt_checkpoint, "checkpoint=%s"},
> +     {Opt_errors, "errors=%s"},
>       {Opt_err, NULL},
>  };
>  
> @@ -788,6 +790,23 @@ static int parse_options(struct super_block *sb, char 
> *options)
>                       }
>                       kvfree(name);
>                       break;
> +             case Opt_errors:
> +#ifndef CONFIG_F2FS_CHECK_FS
> +                     name = match_strdup(&args[0]);
> +                     if (!name)
> +                             return -ENOMEM;
> +
> +                     if (strlen(name) == 5 && !strncmp(name, "panic", 5)) {
> +                             set_opt(sbi, ERRORS_PANIC);
> +                     } else {
> +                             kvfree(name);
> +                             return -EINVAL;
> +                     }
> +                     kvfree(name);
> +                     f2fs_msg(sb, KERN_INFO,
> +                             "debug mode errors=panic enabled\n");
> +#endif
> +                     break;
>               default:
>                       f2fs_msg(sb, KERN_ERR,
>                               "Unrecognized mount option \"%s\" or missing 
> value",
> @@ -1417,6 +1436,8 @@ static int f2fs_show_options(struct seq_file *seq, 
> struct dentry *root)
>               seq_printf(seq, ",fsync_mode=%s", "strict");
>       else if (F2FS_OPTION(sbi).fsync_mode == FSYNC_MODE_NOBARRIER)
>               seq_printf(seq, ",fsync_mode=%s", "nobarrier");
> +     if (test_opt(sbi, ERRORS_PANIC))
> +             seq_printf(seq, ",errors=%s", "panic");
>       return 0;
>  }
>  
> 


_______________________________________________
Linux-f2fs-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to