Re: [PATCHv2] fat: add config option to set UTF-8 mount option by default

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



"Maciej S. Szmigiero" <mail@xxxxxxxxxxxxxxxxxxxxx> writes:

> FAT has long supported its own default file name encoding
> config setting, separate from CONFIG_NLS_DEFAULT.
>
> However, if UTF-8 encoded file names are desired FAT
> character set should not be set to utf8 since this would
> make file names case sensitive even if case insensitive
> matching is requested.
> Instead, "utf8" mount options should be provided to enable
> UTF-8 file names in FAT file system.
>
> Unfortunately, there was no possibility to set the default
> value of this option so on UTF-8 system "utf8" mount option
> had to be added manually to most FAT mounts.
>
> This patch adds config option to set such default value.
>
> Signed-off-by: Maciej S. Szmigiero <mail@xxxxxxxxxxxxxxxxxxxxx>

Acked-by: OGAWA Hirofumi <hirofumi@xxxxxxxxxxxxxxxxxx>

> ---
> Changes from v1: use IS_ENABLED() macro to simplify code
>
>  Documentation/filesystems/vfat.txt |  7 ++++---
>  fs/fat/Kconfig                     | 18 +++++++++++++++++-
>  fs/fat/inode.c                     |  4 +++-
>  3 files changed, 24 insertions(+), 5 deletions(-)
>
> diff --git a/Documentation/filesystems/vfat.txt b/Documentation/filesystems/vfat.txt
> index 223c32171dcc..cf51360e3a9f 100644
> --- a/Documentation/filesystems/vfat.txt
> +++ b/Documentation/filesystems/vfat.txt
> @@ -56,9 +56,10 @@ iocharset=<name> -- Character set to use for converting between the
>  		 you should consider the following option instead.
>  
>  utf8=<bool>   -- UTF-8 is the filesystem safe version of Unicode that
> -		 is used by the console.  It can be enabled for the
> -		 filesystem with this option. If 'uni_xlate' gets set,
> -		 UTF-8 gets disabled.
> +		 is used by the console. It can be enabled or disabled
> +		 for the filesystem with this option.
> +		 If 'uni_xlate' gets set, UTF-8 gets disabled.
> +		 By default, FAT_DEFAULT_UTF8 setting is used.
>  
>  uni_xlate=<bool> -- Translate unhandled Unicode characters to special
>  		 escaped sequences.  This would let you backup and
> diff --git a/fs/fat/Kconfig b/fs/fat/Kconfig
> index 182f9ffe2b51..3ff1772f612e 100644
> --- a/fs/fat/Kconfig
> +++ b/fs/fat/Kconfig
> @@ -93,8 +93,24 @@ config FAT_DEFAULT_IOCHARSET
>  	  that most of your FAT filesystems use, and can be overridden
>  	  with the "iocharset" mount option for FAT filesystems.
>  	  Note that "utf8" is not recommended for FAT filesystems.
> -	  If unsure, you shouldn't set "utf8" here.
> +	  If unsure, you shouldn't set "utf8" here - select the next option
> +	  instead if you would like to use UTF-8 encoded file names by default.
>  	  See <file:Documentation/filesystems/vfat.txt> for more information.
>  
>  	  Enable any character sets you need in File Systems/Native Language
>  	  Support.
> +
> +config FAT_DEFAULT_UTF8
> +	bool "Enable FAT UTF-8 option by default"
> +	depends on VFAT_FS
> +	default n
> +	help
> +	  Set this if you would like to have "utf8" mount option set
> +	  by default when mounting FAT filesystems.
> +
> +	  Even if you say Y here can always disable UTF-8 for
> +	  particular mount by adding "utf8=0" to mount options.
> +
> +	  Say Y if you use UTF-8 encoding for file names, N otherwise.
> +
> +	  See <file:Documentation/filesystems/vfat.txt> for more information.
> diff --git a/fs/fat/inode.c b/fs/fat/inode.c
> index a5599052116c..226281068a46 100644
> --- a/fs/fat/inode.c
> +++ b/fs/fat/inode.c
> @@ -1127,7 +1127,7 @@ static int parse_options(struct super_block *sb, char *options, int is_vfat,
>  	}
>  	opts->name_check = 'n';
>  	opts->quiet = opts->showexec = opts->sys_immutable = opts->dotsOK =  0;
> -	opts->utf8 = opts->unicode_xlate = 0;
> +	opts->unicode_xlate = 0;
>  	opts->numtail = 1;
>  	opts->usefree = opts->nocase = 0;
>  	opts->tz_set = 0;
> @@ -1135,6 +1135,8 @@ static int parse_options(struct super_block *sb, char *options, int is_vfat,
>  	opts->errors = FAT_ERRORS_RO;
>  	*debug = 0;
>  
> +	opts->utf8 = IS_ENABLED(CONFIG_FAT_DEFAULT_UTF8) && is_vfat;
> +
>  	if (!options)
>  		goto out;
>  

-- 
OGAWA Hirofumi <hirofumi@xxxxxxxxxxxxxxxxxx>
--
To unsubscribe from this list: send the line "unsubscribe linux-doc" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Linux FS]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux