[OpenAFS-devel] AFS vs UNICODE
Erik Dalén
dalen@socialisterna.org
Fri, 9 May 2008 16:10:35 +0200
On Tue, May 6, 2008 at 4:57 PM, Jeffrey Altman
<jaltman@secure-endpoints.com> wrote:
> Derrick Brashear wrote:
>>>
>>> Note that the problem is worse than might be inferred from your
>>> description. If a fileserver is installed which behaves as you sugges=
t,
>>> then when a MacOS X client creates a file with a name for which NFC an=
d
>>> NFD produce different code sequences, the fileserver will normalize to
>>> NFC
>>> before creating the directory entry, and MacOS will be unable to look =
up
>>> the entry in the resulting directory. It'll be subtle, too, because t=
he
>>> MacOS client will update its local copy of the directory itself, with
>>> the
>>> NFD filename, and won't notice the fileserver's change until either th=
at
>>> directory is changed by some other client or the directory data is
>>> evicted
>>> from the MacOS client's cache (note that callback expiration is _not_
>>> sufficient here -- the client can use "old" data in its cache as long =
as
>>> it does a new RXAFS_FetchStatus and notices the DV hasn't changed).
>>
>> I'm thinking there's a trick to be done with an "unexpected" DV change
>> such that LocalHero doesn't apply, avoiding this issue and forcing a
>> refetch.
>
> I still don't think that is going to do the right thing.
> That will permit the old MacoS X client to create the file. It will
> read the directory with the new name in it. And then be unable to open
> it because NFD != NFC and the hash table lookup will fail.
>
> I'm so sad.
>
>
The git list had a discussion about this same issue, and from their
testing is seems like most other file system drivers for Mac OS X
translate between UTF-8 NFD and NFC.
According to this post at least SMB, MSDOS, UDF, ISO 9660 (Joliet),
NTFS and ZFS file systems do this. HFS+ stores the files in NFD
natively.
http://kerneltrap.org/mailarchive/git/2008/1/23/593749
Another subtlety is that they use different types of NFD in Mac OS X
< 10.3.0 and >= 10.3.0.
Lots of fun in other words, but as most other file system drivers does
it it seems logical to do it in the AFS client for Mac as well.
--
Erik Dalén