Commit 2d834bf9 authored by Jaegeuk Kim's avatar Jaegeuk Kim

f2fs: support norecovery mount option

This patch adds a mount option, norecovery, which is mostly same as
disable_roll_forward. The only difference is that norecovery should be activated
with read-only mount option.

This can be used when user wants to check whether f2fs is mountable or not
without any recovery process. (e.g., xfstests/200)
Reviewed-by: default avatarChao Yu <chao2.yu@samsung.com>
Signed-off-by: default avatarJaegeuk Kim <jaegeuk@kernel.org>
parent dabc4a5c
...@@ -106,6 +106,8 @@ background_gc=%s Turn on/off cleaning operations, namely garbage ...@@ -106,6 +106,8 @@ background_gc=%s Turn on/off cleaning operations, namely garbage
Default value for this option is on. So garbage Default value for this option is on. So garbage
collection is on by default. collection is on by default.
disable_roll_forward Disable the roll-forward recovery routine disable_roll_forward Disable the roll-forward recovery routine
norecovery Disable the roll-forward recovery routine, mounted read-
only (i.e., -o ro,disable_roll_forward)
discard Issue discard/TRIM commands when a segment is cleaned. discard Issue discard/TRIM commands when a segment is cleaned.
no_heap Disable heap-style segment allocation which finds free no_heap Disable heap-style segment allocation which finds free
segments for data from the beginning of main area, while segments for data from the beginning of main area, while
......
...@@ -42,6 +42,7 @@ static struct kset *f2fs_kset; ...@@ -42,6 +42,7 @@ static struct kset *f2fs_kset;
enum { enum {
Opt_gc_background, Opt_gc_background,
Opt_disable_roll_forward, Opt_disable_roll_forward,
Opt_norecovery,
Opt_discard, Opt_discard,
Opt_noheap, Opt_noheap,
Opt_user_xattr, Opt_user_xattr,
...@@ -62,6 +63,7 @@ enum { ...@@ -62,6 +63,7 @@ enum {
static match_table_t f2fs_tokens = { static match_table_t f2fs_tokens = {
{Opt_gc_background, "background_gc=%s"}, {Opt_gc_background, "background_gc=%s"},
{Opt_disable_roll_forward, "disable_roll_forward"}, {Opt_disable_roll_forward, "disable_roll_forward"},
{Opt_norecovery, "norecovery"},
{Opt_discard, "discard"}, {Opt_discard, "discard"},
{Opt_noheap, "no_heap"}, {Opt_noheap, "no_heap"},
{Opt_user_xattr, "user_xattr"}, {Opt_user_xattr, "user_xattr"},
...@@ -287,6 +289,12 @@ static int parse_options(struct super_block *sb, char *options) ...@@ -287,6 +289,12 @@ static int parse_options(struct super_block *sb, char *options)
case Opt_disable_roll_forward: case Opt_disable_roll_forward:
set_opt(sbi, DISABLE_ROLL_FORWARD); set_opt(sbi, DISABLE_ROLL_FORWARD);
break; break;
case Opt_norecovery:
/* this option mounts f2fs with ro */
set_opt(sbi, DISABLE_ROLL_FORWARD);
if (!f2fs_readonly(sb))
return -EINVAL;
break;
case Opt_discard: case Opt_discard:
set_opt(sbi, DISCARD); set_opt(sbi, DISCARD);
break; break;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment