Re: [RFC PATCH 11/20] hfs: Explicitly set hsb->nls_disk when hsb->nls_io is set

From: Viacheslav Dubeyko
Date: Mon Aug 09 2021 - 14:00:56 EST




> On Aug 9, 2021, at 10:37 AM, Matthew Wilcox <willy@xxxxxxxxxxxxx> wrote:
>
> On Mon, Aug 09, 2021 at 10:31:55AM -0700, Viacheslav Dubeyko wrote:
>>> On Aug 8, 2021, at 9:24 AM, Pali Rohár <pali@xxxxxxxxxx> wrote:
>>>
>>> It does not make any sense to set hsb->nls_io (NLS iocharset used between
>>> VFS and hfs driver) when hsb->nls_disk (NLS codepage used between hfs
>>> driver and disk) is not set.
>>>
>>> Reverse engineering driver code shown what is doing in this special case:
>>>
>>> When codepage was not defined but iocharset was then
>>> hfs driver copied 8bit character from disk directly to
>>> 16bit unicode wchar_t type. Which means it did conversion
>>> from Latin1 (ISO-8859-1) to Unicode because first 256
>>> Unicode code points matches 8bit ISO-8859-1 codepage table.
>>> So when iocharset was specified and codepage not, then
>>> codepage used implicit value "iso8859-1".
>>>
>>> So when hsb->nls_disk is not set and hsb->nls_io is then explicitly set
>>> hsb->nls_disk to "iso8859-1".
>>>
>>> Such setup is obviously incompatible with Mac OS systems as they do not
>>> support iso8859-1 encoding for hfs. So print warning into dmesg about this
>>> fact.
>>>
>>> After this change hsb->nls_disk is always set, so remove code paths for
>>> case when hsb->nls_disk was not set as they are not needed anymore.
>>
>>
>> Sounds reasonable. But it will be great to know that the change has been tested reasonably well.
>
> I don't think it's reasonable to ask Pali to test every single filesystem.
> That's something the maintainer should do, as you're more likely to have
> the infrastructure already set up to do testing of your filesystem and
> be aware of fun corner cases and use cases than someone who's working
> across all filesystems.

I see the point. But the whole approach needs to be tested as minimum for one particular file system. :) And it could be any favorite one.

Thanks,
Slava.