diff options
author | Jaegeuk Kim <jaegeuk@kernel.org> | 2015-10-05 11:02:54 -0700 |
---|---|---|
committer | Jaegeuk Kim <jaegeuk@kernel.org> | 2015-10-09 16:20:57 -0700 |
commit | 6aefd93b01379bf0b62f8b38dcf7a21397893833 (patch) | |
tree | 1d01c1c728ab42d50282c0d54f86a0ceedef0cd1 /fs/f2fs/super.c | |
parent | 456b88e4d15de833165cce67c2cdf998139e2fc1 (diff) | |
download | linux-6aefd93b01379bf0b62f8b38dcf7a21397893833.tar.gz linux-6aefd93b01379bf0b62f8b38dcf7a21397893833.tar.bz2 linux-6aefd93b01379bf0b62f8b38dcf7a21397893833.zip |
f2fs: introduce background_gc=sync mount option
This patch introduce background_gc=sync enabling synchronous cleaning in
background.
Reviewed-by: Chao Yu <chao2.yu@samsung.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Diffstat (limited to 'fs/f2fs/super.c')
-rw-r--r-- | fs/f2fs/super.c | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c index 16442ec89489..ba058d08cb33 100644 --- a/fs/f2fs/super.c +++ b/fs/f2fs/super.c @@ -292,11 +292,16 @@ static int parse_options(struct super_block *sb, char *options) if (!name) return -ENOMEM; - if (strlen(name) == 2 && !strncmp(name, "on", 2)) + if (strlen(name) == 2 && !strncmp(name, "on", 2)) { set_opt(sbi, BG_GC); - else if (strlen(name) == 3 && !strncmp(name, "off", 3)) + clear_opt(sbi, FORCE_FG_GC); + } else if (strlen(name) == 3 && !strncmp(name, "off", 3)) { clear_opt(sbi, BG_GC); - else { + clear_opt(sbi, FORCE_FG_GC); + } else if (strlen(name) == 4 && !strncmp(name, "sync", 4)) { + set_opt(sbi, BG_GC); + set_opt(sbi, FORCE_FG_GC); + } else { kfree(name); return -EINVAL; } @@ -631,10 +636,14 @@ static int f2fs_show_options(struct seq_file *seq, struct dentry *root) { struct f2fs_sb_info *sbi = F2FS_SB(root->d_sb); - if (!f2fs_readonly(sbi->sb) && test_opt(sbi, BG_GC)) - seq_printf(seq, ",background_gc=%s", "on"); - else + if (!f2fs_readonly(sbi->sb) && test_opt(sbi, BG_GC)) { + if (test_opt(sbi, FORCE_FG_GC)) + seq_printf(seq, ",background_gc=%s", "sync"); + else + seq_printf(seq, ",background_gc=%s", "on"); + } else { seq_printf(seq, ",background_gc=%s", "off"); + } if (test_opt(sbi, DISABLE_ROLL_FORWARD)) seq_puts(seq, ",disable_roll_forward"); if (test_opt(sbi, DISCARD)) |