On Thursday 02 January 2020 15:06:16 Namjae Jeon wrote: > > > +static const struct fs_parameter_spec exfat_param_specs[] = { > > > + fsparam_u32("uid", Opt_uid), > > > + fsparam_u32("gid", Opt_gid), > > > + fsparam_u32oct("umask", Opt_umask), > > > + fsparam_u32oct("dmask", Opt_dmask), > > > + fsparam_u32oct("fmask", Opt_fmask), > > > + fsparam_u32oct("allow_utime", Opt_allow_utime), > > > + fsparam_string("iocharset", Opt_charset), > > > + fsparam_flag("utf8", Opt_utf8), > > > > Hello! What is the purpose of having extra special "utf8" mount option? > > Is not one "iocharset=utf8" option enough? > utf8 nls_table supports utf8<->utf32 conversion and does not support > surrogate character conversion. So in other words, this is just subset of UTF-8 just to 3 byte long sequences (for Unicode code points up to the U+FFFF). > The utf8 option can support the surrogate > character conversion of utf16 using utf16s_to_utf8s/utf8s_to_utf16s of > the nls base. So this is full UTF-8 support, right? And what is the point to have two options for UTF-8 support, when one is incomplete / broken? I see no benefit to have first option at all. Providing incomplete / broken support to userspace does not make much sense if we already have full and working support via different mount option. Maybe second option with full UTF-8 support should be used also by iocharset=utf8 and then we do not need utf8 option at all? -- Pali Rohár pali.rohar@xxxxxxxxx