f2fs: add barrier mount option
authorYangtao Li <frank.li@vivo.com>
Mon, 24 Oct 2022 17:54:01 +0000 (01:54 +0800)
committerJaegeuk Kim <jaegeuk@kernel.org>
Wed, 2 Nov 2022 00:56:02 +0000 (17:56 -0700)
This patch adds a mount option, barrier, in f2fs.
The barrier option is the opposite of nobarrier.
If this option is set, cache_flush commands are allowed to be issued.

Signed-off-by: Yangtao Li <frank.li@vivo.com>
Reviewed-by: Chao Yu <chao@kernel.org>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Documentation/filesystems/f2fs.rst
fs/f2fs/super.c

index b797e8ec96ede22f2e24ea654457a69045d29cc6..6e67c5e6c7c3777334872621ed433985ca4dd030 100644 (file)
@@ -154,6 +154,8 @@ nobarrier            This option can be used if underlying storage guarantees
                         If this option is set, no cache_flush commands are issued
                         but f2fs still guarantees the write ordering of all the
                         data writes.
+barrier                 If this option is set, cache_flush commands are allowed to be
+                        issued.
 fastboot                This option is used when a system wants to reduce mount
                         time as much as possible, even though normal performance
                         can be sacrificed.
index df26fbe2bf58621b3d2daf44b5590eaf6fbcbad3..a247027711d89c6e5d52302d092c8de9ad7a6ba0 100644 (file)
@@ -111,6 +111,7 @@ enum {
        Opt_noinline_dentry,
        Opt_flush_merge,
        Opt_noflush_merge,
+       Opt_barrier,
        Opt_nobarrier,
        Opt_fastboot,
        Opt_extent_cache,
@@ -187,6 +188,7 @@ static match_table_t f2fs_tokens = {
        {Opt_noinline_dentry, "noinline_dentry"},
        {Opt_flush_merge, "flush_merge"},
        {Opt_noflush_merge, "noflush_merge"},
+       {Opt_barrier, "barrier"},
        {Opt_nobarrier, "nobarrier"},
        {Opt_fastboot, "fastboot"},
        {Opt_extent_cache, "extent_cache"},
@@ -807,6 +809,9 @@ static int parse_options(struct super_block *sb, char *options, bool is_remount)
                case Opt_nobarrier:
                        set_opt(sbi, NOBARRIER);
                        break;
+               case Opt_barrier:
+                       clear_opt(sbi, NOBARRIER);
+                       break;
                case Opt_fastboot:
                        set_opt(sbi, FASTBOOT);
                        break;
@@ -1940,6 +1945,8 @@ static int f2fs_show_options(struct seq_file *seq, struct dentry *root)
                seq_puts(seq, ",flush_merge");
        if (test_opt(sbi, NOBARRIER))
                seq_puts(seq, ",nobarrier");
+       else
+               seq_puts(seq, ",barrier");
        if (test_opt(sbi, FASTBOOT))
                seq_puts(seq, ",fastboot");
        if (test_opt(sbi, EXTENT_CACHE))