Subject: linux-next: manual merge of the vfs tree with the ubifs tree

From: Stephen Rothwell <[email-masked]>
Date: Tue, 9 Jul 2019 11:38:45 +1000

Hi all,

Today's linux-next merge of the vfs tree got a conflict in:

  fs/ubifs/super.c

between commit:

  eeabb9866e4c ("ubifs: Add support for zstd compression.")

from the ubifs tree and commit:

  334d581528b9 ("vfs: Convert ubifs to use the new mount API")

from the vfs tree.

I fixed it up (see below) and can carry the fix as necessary. This
is now fixed as far as linux-next is concerned, but any non trivial
conflicts should be mentioned to your upstream maintainer when your tree
is submitted for merging.  You may also want to consider cooperating
with the maintainer of the conflicting tree to minimise any particularly
complex conflicts.

-- 
Cheers,
Stephen Rothwell

diff --cc fs/ubifs/super.c
index 5c472cca3876,62f339d901c1..000000000000
--- a/fs/ubifs/super.c
+++ b/fs/ubifs/super.c
@@@ -939,49 -937,42 +939,43 @@@ enum 
  	Opt_auth_key,
  	Opt_auth_hash_name,
  	Opt_ignore,
- 	Opt_err,
  };
  
- static const match_table_t tokens = {
- 	{Opt_fast_unmount, "fast_unmount"},
- 	{Opt_norm_unmount, "norm_unmount"},
- 	{Opt_bulk_read, "bulk_read"},
- 	{Opt_no_bulk_read, "no_bulk_read"},
- 	{Opt_chk_data_crc, "chk_data_crc"},
- 	{Opt_no_chk_data_crc, "no_chk_data_crc"},
- 	{Opt_override_compr, "compr=%s"},
- 	{Opt_auth_key, "auth_key=%s"},
- 	{Opt_auth_hash_name, "auth_hash_name=%s"},
- 	{Opt_ignore, "ubi=%s"},
- 	{Opt_ignore, "vol=%s"},
- 	{Opt_assert, "assert=%s"},
- 	{Opt_err, NULL},
+ static const struct fs_parameter_spec ubifs_param_specs[] = {
+ 	fsparam_flag	("fast_unmount",		Opt_fast_unmount),
+ 	fsparam_flag	("norm_unmount",		Opt_norm_unmount),
+ 	fsparam_flag	("bulk_read",			Opt_bulk_read),
+ 	fsparam_flag	("no_bulk_read",		Opt_no_bulk_read),
+ 	fsparam_flag	("chk_data_crc",		Opt_chk_data_crc),
+ 	fsparam_flag	("no_chk_data_crc",		Opt_no_chk_data_crc),
+ 	fsparam_enum	("compr",			Opt_compr),
+ 	fsparam_enum	("assert",			Opt_assert),
+ 	fsparam_string	("auth_key",			Opt_auth_key),
+ 	fsparam_string	("auth_hash_name",		Opt_auth_hash_name),
+ 	fsparam_string	("ubi",				Opt_ignore),
+ 	fsparam_string	("vol",				Opt_ignore),
+ 	{}
  };
  
- /**
-  * parse_standard_option - parse a standard mount option.
-  * @option: the option to parse
-  *
-  * Normally, standard mount options like "sync" are passed to file-systems as
-  * flags. However, when a "rootflags=" kernel boot parameter is used, they may
-  * be present in the options string. This function tries to deal with this
-  * situation and parse standard options. Returns 0 if the option was not
-  * recognized, and the corresponding integer flag if it was.
-  *
-  * UBIFS is only interested in the "sync" option, so do not check for anything
-  * else.
-  */
- static int parse_standard_option(const char *option)
- {
+ static const struct fs_parameter_enum ubifs_param_enums[] = {
+ 	{ Opt_compr,	"none",		UBIFS_COMPR_NONE },
+ 	{ Opt_compr,	"lzo",		UBIFS_COMPR_LZO },
+ 	{ Opt_compr,	"zlib",		UBIFS_COMPR_ZLIB },
++	{ Opt_compr,	"zstd",		UBIFS_COMPR_ZSTD },
+ 	{ Opt_assert,	"report",	ASSACT_REPORT },
+ 	{ Opt_assert,	"read-only",	ASSACT_RO },
+ 	{ Opt_assert,	"panic",	ASSACT_PANIC },
+ 	{}
+ };
  
- 	pr_notice("UBIFS: parse %s\n", option);
- 	if (!strcmp(option, "sync"))
- 		return SB_SYNCHRONOUS;
- 	return 0;
- }
+ static const struct fs_parameter_description ubifs_fs_parameters = {
+ 	.name		= "ubifs",
+ 	.specs		= ubifs_param_specs,
+ 	.enums		= ubifs_param_enums,
+ };
  
  /**
-  * ubifs_parse_options - parse mount parameters.
+  * ubifs_parse_param - parse a parameter.
   * @c: UBIFS file-system description object
   * @options: parameters to parse
   * @is_remount: non-zero if this is FS re-mount