linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCHv2] fat: add config option to set UTF-8 mount option by default
@ 2016-03-08 13:53 Maciej S. Szmigiero
  2016-03-08 18:08 ` OGAWA Hirofumi
  2016-03-23  8:17 ` Geert Uytterhoeven
  0 siblings, 2 replies; 7+ messages in thread
From: Maciej S. Szmigiero @ 2016-03-08 13:53 UTC (permalink / raw)
  To: OGAWA Hirofumi; +Cc: Jonathan Corbet, linux-doc, linux-kernel

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@maciej.szmigiero.name>
---
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;
 

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCHv2] fat: add config option to set UTF-8 mount option by default
  2016-03-08 13:53 [PATCHv2] fat: add config option to set UTF-8 mount option by default Maciej S. Szmigiero
@ 2016-03-08 18:08 ` OGAWA Hirofumi
  2016-03-23  8:17 ` Geert Uytterhoeven
  1 sibling, 0 replies; 7+ messages in thread
From: OGAWA Hirofumi @ 2016-03-08 18:08 UTC (permalink / raw)
  To: Maciej S. Szmigiero, Andrew Morton
  Cc: Jonathan Corbet, linux-doc, linux-kernel

"Maciej S. Szmigiero" <mail@maciej.szmigiero.name> 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@maciej.szmigiero.name>

Acked-by: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>

> ---
> 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@mail.parknet.co.jp>

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCHv2] fat: add config option to set UTF-8 mount option by default
  2016-03-08 13:53 [PATCHv2] fat: add config option to set UTF-8 mount option by default Maciej S. Szmigiero
  2016-03-08 18:08 ` OGAWA Hirofumi
@ 2016-03-23  8:17 ` Geert Uytterhoeven
  2016-03-23 11:28   ` Josh Boyer
  1 sibling, 1 reply; 7+ messages in thread
From: Geert Uytterhoeven @ 2016-03-23  8:17 UTC (permalink / raw)
  To: Maciej S. Szmigiero
  Cc: OGAWA Hirofumi, Jonathan Corbet, linux-doc, linux-kernel

On Tue, Mar 8, 2016 at 2:53 PM, Maciej S. Szmigiero
<mail@maciej.szmigiero.name> wrote:
> 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@maciej.szmigiero.name>

> --- 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.

What's the recommended value of CONFIG_FAT_DEFAULT_UTF8 for
a (distro) defconfig?

Gr{oetje,eeting}s,

                        Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCHv2] fat: add config option to set UTF-8 mount option by default
  2016-03-23  8:17 ` Geert Uytterhoeven
@ 2016-03-23 11:28   ` Josh Boyer
  2016-03-23 12:27     ` Geert Uytterhoeven
  0 siblings, 1 reply; 7+ messages in thread
From: Josh Boyer @ 2016-03-23 11:28 UTC (permalink / raw)
  To: Geert Uytterhoeven
  Cc: Maciej S. Szmigiero, OGAWA Hirofumi, Jonathan Corbet, linux-doc,
	linux-kernel

On Wed, Mar 23, 2016 at 4:17 AM, Geert Uytterhoeven
<geert@linux-m68k.org> wrote:
> On Tue, Mar 8, 2016 at 2:53 PM, Maciej S. Szmigiero
> <mail@maciej.szmigiero.name> wrote:
>> 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@maciej.szmigiero.name>
>
>> --- 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.
>
> What's the recommended value of CONFIG_FAT_DEFAULT_UTF8 for
> a (distro) defconfig?

Yes, I'm curious about this as well.  My initial assumption is to
leave it off, given that if you turn it on when it wasn't previously
it will change the behavior.  I would also assume that is why it is
marked as default n.

josh

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCHv2] fat: add config option to set UTF-8 mount option by default
  2016-03-23 11:28   ` Josh Boyer
@ 2016-03-23 12:27     ` Geert Uytterhoeven
  2016-03-23 12:57       ` Josh Boyer
  0 siblings, 1 reply; 7+ messages in thread
From: Geert Uytterhoeven @ 2016-03-23 12:27 UTC (permalink / raw)
  To: Josh Boyer
  Cc: Maciej S. Szmigiero, OGAWA Hirofumi, Jonathan Corbet, linux-doc,
	linux-kernel

On Wed, Mar 23, 2016 at 12:28 PM, Josh Boyer <jwboyer@fedoraproject.org> wrote:
> On Wed, Mar 23, 2016 at 4:17 AM, Geert Uytterhoeven
> <geert@linux-m68k.org> wrote:
>> On Tue, Mar 8, 2016 at 2:53 PM, Maciej S. Szmigiero
>> <mail@maciej.szmigiero.name> wrote:
>>> 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@maciej.szmigiero.name>
>>
>>> --- 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.
>>
>> What's the recommended value of CONFIG_FAT_DEFAULT_UTF8 for
>> a (distro) defconfig?
>
> Yes, I'm curious about this as well.  My initial assumption is to
> leave it off, given that if you turn it on when it wasn't previously
> it will change the behavior.  I would also assume that is why it is
> marked as default n.

"default n" is superfluous, as all options default to "n" in the absence
of a default specifier.

Gr{oetje,eeting}s,

                        Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCHv2] fat: add config option to set UTF-8 mount option by default
  2016-03-23 12:27     ` Geert Uytterhoeven
@ 2016-03-23 12:57       ` Josh Boyer
  2016-03-23 16:41         ` Maciej S. Szmigiero
  0 siblings, 1 reply; 7+ messages in thread
From: Josh Boyer @ 2016-03-23 12:57 UTC (permalink / raw)
  To: Geert Uytterhoeven
  Cc: Maciej S. Szmigiero, OGAWA Hirofumi, Jonathan Corbet, linux-doc,
	linux-kernel

On Wed, Mar 23, 2016 at 8:27 AM, Geert Uytterhoeven
<geert@linux-m68k.org> wrote:
> On Wed, Mar 23, 2016 at 12:28 PM, Josh Boyer <jwboyer@fedoraproject.org> wrote:
>> On Wed, Mar 23, 2016 at 4:17 AM, Geert Uytterhoeven
>> <geert@linux-m68k.org> wrote:
>>> On Tue, Mar 8, 2016 at 2:53 PM, Maciej S. Szmigiero
>>> <mail@maciej.szmigiero.name> wrote:
>>>> 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@maciej.szmigiero.name>
>>>
>>>> --- 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.
>>>
>>> What's the recommended value of CONFIG_FAT_DEFAULT_UTF8 for
>>> a (distro) defconfig?
>>
>> Yes, I'm curious about this as well.  My initial assumption is to
>> leave it off, given that if you turn it on when it wasn't previously
>> it will change the behavior.  I would also assume that is why it is
>> marked as default n.
>
> "default n" is superfluous, as all options default to "n" in the absence
> of a default specifier.

Yes, I know that.  I meant that I assumed the patch author knows that
too, and included it anyway as a helpful indicator that it shouldn't
be turned on in most cases.  At any rate, your question still stands
and it would be nice to get an answer.

josh

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCHv2] fat: add config option to set UTF-8 mount option by default
  2016-03-23 12:57       ` Josh Boyer
@ 2016-03-23 16:41         ` Maciej S. Szmigiero
  0 siblings, 0 replies; 7+ messages in thread
From: Maciej S. Szmigiero @ 2016-03-23 16:41 UTC (permalink / raw)
  To: Josh Boyer, Geert Uytterhoeven
  Cc: OGAWA Hirofumi, Jonathan Corbet, linux-doc, linux-kernel

On 23.03.2016 13:57, Josh Boyer wrote:
> On Wed, Mar 23, 2016 at 8:27 AM, Geert Uytterhoeven
> <geert@linux-m68k.org> wrote:
>> On Wed, Mar 23, 2016 at 12:28 PM, Josh Boyer <jwboyer@fedoraproject.org> wrote:
>>> On Wed, Mar 23, 2016 at 4:17 AM, Geert Uytterhoeven
>>> <geert@linux-m68k.org> wrote:
>>>> On Tue, Mar 8, 2016 at 2:53 PM, Maciej S. Szmigiero
>>>> <mail@maciej.szmigiero.name> wrote:
>>>>> 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@maciej.szmigiero.name>
>>>>
>>>>> --- 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.
>>>>
>>>> What's the recommended value of CONFIG_FAT_DEFAULT_UTF8 for
>>>> a (distro) defconfig?
>>>
>>> Yes, I'm curious about this as well.  My initial assumption is to
>>> leave it off, given that if you turn it on when it wasn't previously
>>> it will change the behavior.  I would also assume that is why it is
>>> marked as default n.
>>
>> "default n" is superfluous, as all options default to "n" in the absence
>> of a default specifier.
> 
> Yes, I know that.  I meant that I assumed the patch author knows that
> too, and included it anyway as a helpful indicator that it shouldn't
> be turned on in most cases.  At any rate, your question still stands
> and it would be nice to get an answer.

The default is 'n' here for compatibility with older .configs,
and to be consistent with the main FS NLS option (CONFIG_NLS_DEFAULT)
since it also defaults to non-UTF-8 encoding.

If file names are UTF-8 encoded then if FAT filesystems were always
mounted with utf8 mount option, or with CONFIG_FAT_DEFAULT_IOCHARSET or
"iocharset" mount option set to "utf8" (not recommended,
but I've seen for example Knoppix doing it) then with this options set
there is effectively no change in functionality.

If file names are UTF-8 encoded but none of conditions described in
the previous paragraph were true then UTF-8 file names were reinterpreted
as CONFIG_FAT_DEFAULT_IOCHARSET (by default iso8859-1) then converted
into UTF-16 for storage.

While this usually worked it weren't correct: file names containing
characters outside ASCII had them replaced with some garbage when
accessing such FS with UTF-8 correctly enabled (for example with this
option set) or on Windows.

However, if such conditions (UTF-8 file names but non-UTF-8 FAT mount
options) were present for a long time then it has to be taken into
consideration that there are likely at least a few file systems with
file names encoded in such way and it would be good not to change it
suddenly when people update their kernels.

> josh

Maciej

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2016-03-23 16:41 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-03-08 13:53 [PATCHv2] fat: add config option to set UTF-8 mount option by default Maciej S. Szmigiero
2016-03-08 18:08 ` OGAWA Hirofumi
2016-03-23  8:17 ` Geert Uytterhoeven
2016-03-23 11:28   ` Josh Boyer
2016-03-23 12:27     ` Geert Uytterhoeven
2016-03-23 12:57       ` Josh Boyer
2016-03-23 16:41         ` Maciej S. Szmigiero

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).