]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
f2fs: Only lfs mode is allowed with zoned block device feature
authorChunhai Guo <guochunhai@vivo.com>
Thu, 3 Aug 2023 14:28:42 +0000 (22:28 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 13 Sep 2023 07:48:32 +0000 (09:48 +0200)
[ Upstream commit 2bd4df8fcbc72f58ce3c62ed021ab291ca42de0b ]

Now f2fs support four block allocation modes: lfs, adaptive,
fragment:segment, fragment:block. Only lfs mode is allowed with zoned block
device feature.

Fixes: 6691d940b0e0 ("f2fs: introduce fragment allocation mode mount option")
Signed-off-by: Chunhai Guo <guochunhai@vivo.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
fs/f2fs/super.c

index 3d91b5313947fc7fbce0016e299f2e8a423cd734..72b7ea71f55df2b127377c55d3d7feb9fe5a3f5c 100644 (file)
@@ -860,11 +860,6 @@ static int parse_options(struct super_block *sb, char *options, bool is_remount)
                        if (!name)
                                return -ENOMEM;
                        if (!strcmp(name, "adaptive")) {
-                               if (f2fs_sb_has_blkzoned(sbi)) {
-                                       f2fs_warn(sbi, "adaptive mode is not allowed with zoned block device feature");
-                                       kfree(name);
-                                       return -EINVAL;
-                               }
                                F2FS_OPTION(sbi).fs_mode = FS_MODE_ADAPTIVE;
                        } else if (!strcmp(name, "lfs")) {
                                F2FS_OPTION(sbi).fs_mode = FS_MODE_LFS;
@@ -1329,6 +1324,11 @@ default_check:
                        F2FS_OPTION(sbi).discard_unit =
                                        DISCARD_UNIT_SECTION;
                }
+
+               if (F2FS_OPTION(sbi).fs_mode != FS_MODE_LFS) {
+                       f2fs_info(sbi, "Only lfs mode is allowed with zoned block device feature");
+                       return -EINVAL;
+               }
 #else
                f2fs_err(sbi, "Zoned block device support is not enabled");
                return -EINVAL;