RE: [PATCH] exfat: add the dummy mount options to be backward compatible with staging/exfat
From: Namjae Jeon
Date: Thu May 21 2020 - 19:44:14 EST
> On Thu, May 21, 2020 at 10:44:28AM -0500, Eric Sandeen wrote:
> > On 5/21/20 9:05 AM, Namjae Jeon wrote:
> > > As Ubuntu and Fedora release new version used kernel version equal
> > > to or higher than v5.4, They started to support kernel exfat filesystem.
> > >
> > > Linus Torvalds reported mount error with new version of exfat on Fedora.
> > >
> > > exfat: Unknown parameter 'namecase'
> > >
> > > This is because there is a difference in mount option between old
> > > staging/exfat and new exfat.
> > > And utf8, debug, and codepage options as well as namecase have been
> > > removed from new exfat.
> > >
> > > This patch add the dummy mount options as deprecated option to be
> > > backward compatible with old one.
> >
> > Wow, it seems wild that we'd need to maintain compatibility with
> > options which only ever existed in a different codebase in a staging
> > driver (what's the point of staging if every interface that makes it
> > that far has to be maintained in perpetuity?)
> >
> > Often, when things are deprecated, they are eventually removed.
> > Perhaps a future removal date stated in this commit, or in
> > Documentation/..../exfat.txt would be good as a reminder to eventually remove this?
>
> For NFS, 'intr' has been deprecated since December 2007 and has been printing a warning since June
> 2008. How long until we delete it?
>
> > > static const struct constant_table exfat_param_enums[] = { @@
> > > -223,6 +229,10 @@ static const struct fs_parameter_spec exfat_parameters[] = {
> > > fsparam_enum("errors", Opt_errors, exfat_param_enums),
> > > fsparam_flag("discard", Opt_discard),
> > > fsparam_s32("time_offset", Opt_time_offset),
> > > + fsparam_flag("utf8", Opt_utf8),
> > > + fsparam_flag("debug", Opt_debug),
> > > + fsparam_u32("namecase", Opt_namecase),
> > > + fsparam_u32("codepage", Opt_codepage),
>
> __fsparam(NULL, "utf8", Opt_utf8, fs_param_deprecated, NULL),
> __fsparam(NULL, "debug", Opt_debug, fs_param_deprecated, NULL),
> __fsparam(fs_param_is_u32, "namecase", Opt_namecase,
> fs_param_deprecated, NULL),
> __fsparam(fs_param_is_u32, "codepage", Opt_codepage,
> fs_param_deprecated, NULL),
>
> > > @@ -278,6 +288,18 @@ static int exfat_parse_param(struct fs_context *fc, struct fs_parameter
> *param)
> > > return -EINVAL;
> > > opts->time_offset = result.int_32;
> > > break;
> > > + case Opt_utf8:
> > > + pr_warn("exFAT-fs: 'utf8' mount option is deprecated and has no effect\n");
> > > + break;
> > > + case Opt_debug:
> > > + pr_warn("exFAT-fs: 'debug' mount option is deprecated and has no effect\n");
> > > + break;
> > > + case Opt_namecase:
> > > + pr_warn("exFAT-fs: 'namecase' mount option is deprecated and has no effect\n");
> > > + break;
> > > + case Opt_codepage:
> > > + pr_warn("exFAT-fs: 'codepage' mount option is deprecated and has no effect\n");
> > > + break;
>
> and then you don't need this hunk because the fs parser will print the deprecated message for you.
Fixed it on v3.
Thanks for your review!