f2fs: compress: deny setting unsupported compress algorithm
authorChao Yu <yuchao0@huawei.com>
Fri, 22 Jan 2021 09:40:13 +0000 (17:40 +0800)
committerJaegeuk Kim <jaegeuk@kernel.org>
Wed, 27 Jan 2021 23:20:02 +0000 (15:20 -0800)
If kernel doesn't support certain kinds of compress algorithm, deny to set
them as compress algorithm of f2fs via 'compress_algorithm=%s' mount option.

Signed-off-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/super.c

index b4a07fe62d1a58101e1f896bed40c6f3c28b5b81..a275bd312ae5610facdcd15adc0e8e323a0c3c76 100644 (file)
@@ -882,17 +882,33 @@ static int parse_options(struct super_block *sb, char *options, bool is_remount)
                        if (!name)
                                return -ENOMEM;
                        if (!strcmp(name, "lzo")) {
+#ifdef CONFIG_F2FS_FS_LZO
                                F2FS_OPTION(sbi).compress_algorithm =
                                                                COMPRESS_LZO;
+#else
+                               f2fs_info(sbi, "kernel doesn't support lzo compression");
+#endif
                        } else if (!strcmp(name, "lz4")) {
+#ifdef CONFIG_F2FS_FS_LZ4
                                F2FS_OPTION(sbi).compress_algorithm =
                                                                COMPRESS_LZ4;
+#else
+                               f2fs_info(sbi, "kernel doesn't support lz4 compression");
+#endif
                        } else if (!strcmp(name, "zstd")) {
+#ifdef CONFIG_F2FS_FS_ZSTD
                                F2FS_OPTION(sbi).compress_algorithm =
                                                                COMPRESS_ZSTD;
+#else
+                               f2fs_info(sbi, "kernel doesn't support zstd compression");
+#endif
                        } else if (!strcmp(name, "lzo-rle")) {
+#ifdef CONFIG_F2FS_FS_LZORLE
                                F2FS_OPTION(sbi).compress_algorithm =
                                                                COMPRESS_LZORLE;
+#else
+                               f2fs_info(sbi, "kernel doesn't support lzorle compression");
+#endif
                        } else {
                                kfree(name);
                                return -EINVAL;