Blame SOURCES/0012-exfat-update-file-system-parameter-handling.patch

Kmods SIG 9e3ffb
From 9acd0d53800c55c6e2186e29b6433daf24617451 Mon Sep 17 00:00:00 2001
Kmods SIG 9e3ffb
From: Valdis Kletnieks <valdis.kletnieks@vt.edu>
Kmods SIG 9e3ffb
Date: Mon, 2 Mar 2020 15:21:45 +0900
Kmods SIG 9e3ffb
Subject: [Backport 9acd0d53800c] exfat: update file system parameter handling
Kmods SIG 9e3ffb
Kmods SIG 9e3ffb
Al Viro recently reworked the way file system parameters are handled
Kmods SIG 9e3ffb
Update super.c to work with it in linux-next 20200203.
Kmods SIG 9e3ffb
Kmods SIG 9e3ffb
Signed-off-by: Valdis Kletnieks <valdis.kletnieks@vt.edu>
Kmods SIG 9e3ffb
Reviewed-by: Christoph Hellwig <hch@lst.de>
Kmods SIG 9e3ffb
Acked-by: Namjae Jeon <namjae.jeon@samsung.com>
Kmods SIG 9e3ffb
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Kmods SIG 9e3ffb
---
Kmods SIG 9e3ffb
 src/super.c | 28 +++++++++++-----------------
Kmods SIG 9e3ffb
 1 file changed, 11 insertions(+), 17 deletions(-)
Kmods SIG 9e3ffb
Kmods SIG 9e3ffb
diff --git a/src/super.c b/src/super.c
Kmods SIG 9e3ffb
index f06e0b53e39325937be7512f01c031c93917d9a8..16ed202ef5279abc40b23d03cd346b4baf4c23d3 100644
Kmods SIG 9e3ffb
--- a/src/super.c
Kmods SIG 9e3ffb
+++ b/src/super.c
Kmods SIG 9e3ffb
@@ -214,7 +214,14 @@ enum {
Kmods SIG 9e3ffb
 	Opt_time_offset,
Kmods SIG 9e3ffb
 };
Kmods SIG 9e3ffb
 
Kmods SIG 9e3ffb
-static const struct fs_parameter_spec exfat_param_specs[] = {
Kmods SIG 9e3ffb
+static const struct constant_table exfat_param_enums[] = {
Kmods SIG 9e3ffb
+	{ "continue",		EXFAT_ERRORS_CONT },
Kmods SIG 9e3ffb
+	{ "panic",		EXFAT_ERRORS_PANIC },
Kmods SIG 9e3ffb
+	{ "remount-ro",		EXFAT_ERRORS_RO },
Kmods SIG 9e3ffb
+	{}
Kmods SIG 9e3ffb
+};
Kmods SIG 9e3ffb
+
Kmods SIG 9e3ffb
+static const struct fs_parameter_spec exfat_parameters[] = {
Kmods SIG 9e3ffb
 	fsparam_u32("uid",			Opt_uid),
Kmods SIG 9e3ffb
 	fsparam_u32("gid",			Opt_gid),
Kmods SIG 9e3ffb
 	fsparam_u32oct("umask",			Opt_umask),
Kmods SIG 9e3ffb
@@ -222,25 +229,12 @@ static const struct fs_parameter_spec exfat_param_specs[] = {
Kmods SIG 9e3ffb
 	fsparam_u32oct("fmask",			Opt_fmask),
Kmods SIG 9e3ffb
 	fsparam_u32oct("allow_utime",		Opt_allow_utime),
Kmods SIG 9e3ffb
 	fsparam_string("iocharset",		Opt_charset),
Kmods SIG 9e3ffb
-	fsparam_enum("errors",			Opt_errors),
Kmods SIG 9e3ffb
+	fsparam_enum("errors",			Opt_errors, exfat_param_enums),
Kmods SIG 9e3ffb
 	fsparam_flag("discard",			Opt_discard),
Kmods SIG 9e3ffb
 	fsparam_s32("time_offset",		Opt_time_offset),
Kmods SIG 9e3ffb
 	{}
Kmods SIG 9e3ffb
 };
Kmods SIG 9e3ffb
 
Kmods SIG 9e3ffb
-static const struct fs_parameter_enum exfat_param_enums[] = {
Kmods SIG 9e3ffb
-	{ Opt_errors,	"continue",		EXFAT_ERRORS_CONT },
Kmods SIG 9e3ffb
-	{ Opt_errors,	"panic",		EXFAT_ERRORS_PANIC },
Kmods SIG 9e3ffb
-	{ Opt_errors,	"remount-ro",		EXFAT_ERRORS_RO },
Kmods SIG 9e3ffb
-	{}
Kmods SIG 9e3ffb
-};
Kmods SIG 9e3ffb
-
Kmods SIG 9e3ffb
-static const struct fs_parameter_description exfat_parameters = {
Kmods SIG 9e3ffb
-	.name		= "exfat",
Kmods SIG 9e3ffb
-	.specs		= exfat_param_specs,
Kmods SIG 9e3ffb
-	.enums		= exfat_param_enums,
Kmods SIG 9e3ffb
-};
Kmods SIG 9e3ffb
-
Kmods SIG 9e3ffb
 static int exfat_parse_param(struct fs_context *fc, struct fs_parameter *param)
Kmods SIG 9e3ffb
 {
Kmods SIG 9e3ffb
 	struct exfat_sb_info *sbi = fc->s_fs_info;
Kmods SIG 9e3ffb
@@ -248,7 +242,7 @@ static int exfat_parse_param(struct fs_context *fc, struct fs_parameter *param)
Kmods SIG 9e3ffb
 	struct fs_parse_result result;
Kmods SIG 9e3ffb
 	int opt;
Kmods SIG 9e3ffb
 
Kmods SIG 9e3ffb
-	opt = fs_parse(fc, &exfat_parameters, param, &result);
Kmods SIG 9e3ffb
+	opt = fs_parse(fc, exfat_parameters, param, &result);
Kmods SIG 9e3ffb
 	if (opt < 0)
Kmods SIG 9e3ffb
 		return opt;
Kmods SIG 9e3ffb
 
Kmods SIG 9e3ffb
@@ -665,7 +659,7 @@ static struct file_system_type exfat_fs_type = {
Kmods SIG 9e3ffb
 	.owner			= THIS_MODULE,
Kmods SIG 9e3ffb
 	.name			= "exfat",
Kmods SIG 9e3ffb
 	.init_fs_context	= exfat_init_fs_context,
Kmods SIG 9e3ffb
-	.parameters		= &exfat_parameters,
Kmods SIG 9e3ffb
+	.parameters		= exfat_parameters,
Kmods SIG 9e3ffb
 	.kill_sb		= kill_block_super,
Kmods SIG 9e3ffb
 	.fs_flags		= FS_REQUIRES_DEV,
Kmods SIG 9e3ffb
 };
Kmods SIG 9e3ffb
-- 
Kmods SIG 9e3ffb
2.31.1
Kmods SIG 9e3ffb