Skip to content

Commit

Permalink
fs/ntfs3: Add iocharset= mount option as alias for nls=
Browse files Browse the repository at this point in the history
Other fs drivers are using iocharset= mount option for specifying charset.
So add it also for ntfs3 and mark old nls= mount option as deprecated.

Reviewed-by: Pali Rohár <[email protected]>
Signed-off-by: Kari Argillander <[email protected]>
Signed-off-by: Konstantin Komarov <[email protected]>
  • Loading branch information
teksturi authored and aalexandrovich committed Sep 9, 2021
1 parent 9d1939f commit e274cde
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 9 deletions.
4 changes: 2 additions & 2 deletions Documentation/filesystems/ntfs3.rst
Original file line number Diff line number Diff line change
Expand Up @@ -32,12 +32,12 @@ generic ones.

===============================================================================

nls=name This option informs the driver how to interpret path
iocharset=name This option informs the driver how to interpret path
strings and translate them to Unicode and back. If
this option is not set, the default codepage will be
used (CONFIG_NLS_DEFAULT).
Examples:
'nls=utf8'
'iocharset=utf8'

uid=
gid=
Expand Down
18 changes: 11 additions & 7 deletions fs/ntfs3/super.c
Original file line number Diff line number Diff line change
Expand Up @@ -226,7 +226,7 @@ enum Opt {
Opt_nohidden,
Opt_showmeta,
Opt_acl,
Opt_nls,
Opt_iocharset,
Opt_prealloc,
Opt_no_acs_rules,
Opt_err,
Expand All @@ -245,9 +245,13 @@ static const struct fs_parameter_spec ntfs_fs_parameters[] = {
fsparam_flag_no("hidden", Opt_nohidden),
fsparam_flag_no("acl", Opt_acl),
fsparam_flag_no("showmeta", Opt_showmeta),
fsparam_string("nls", Opt_nls),
fsparam_flag_no("prealloc", Opt_prealloc),
fsparam_flag("no_acs_rules", Opt_no_acs_rules),
fsparam_string("iocharset", Opt_iocharset),

__fsparam(fs_param_is_string,
"nls", Opt_iocharset,
fs_param_deprecated, NULL),
{}
};

Expand Down Expand Up @@ -346,7 +350,7 @@ static int ntfs_fs_parse_param(struct fs_context *fc,
case Opt_showmeta:
opts->showmeta = result.negated ? 0 : 1;
break;
case Opt_nls:
case Opt_iocharset:
kfree(opts->nls_name);
opts->nls_name = param->string;
param->string = NULL;
Expand Down Expand Up @@ -380,11 +384,11 @@ static int ntfs_fs_reconfigure(struct fs_context *fc)
new_opts->nls = ntfs_load_nls(new_opts->nls_name);
if (IS_ERR(new_opts->nls)) {
new_opts->nls = NULL;
errorf(fc, "ntfs3: Cannot load nls %s", new_opts->nls_name);
errorf(fc, "ntfs3: Cannot load iocharset %s", new_opts->nls_name);
return -EINVAL;
}
if (new_opts->nls != sbi->options->nls)
return invalf(fc, "ntfs3: Cannot use different nls when remounting!");
return invalf(fc, "ntfs3: Cannot use different iocharset when remounting!");

sync_filesystem(sb);

Expand Down Expand Up @@ -528,9 +532,9 @@ static int ntfs_show_options(struct seq_file *m, struct dentry *root)
if (opts->dmask)
seq_printf(m, ",dmask=%04o", ~opts->fs_dmask_inv);
if (opts->nls)
seq_printf(m, ",nls=%s", opts->nls->charset);
seq_printf(m, ",iocharset=%s", opts->nls->charset);
else
seq_puts(m, ",nls=utf8");
seq_puts(m, ",iocharset=utf8");
if (opts->sys_immutable)
seq_puts(m, ",sys_immutable");
if (opts->discard)
Expand Down

0 comments on commit e274cde

Please sign in to comment.