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.