Re: Racy NLS behaviour in FAT (and possible other fs)

From: OGAWA Hirofumi
Date: Mon Feb 19 2007 - 11:56:20 EST


Pierre Ossman <drzeus-list@xxxxxxxxx> writes:

> Hi,

Hi,

> I'm experiencing a rather odd behaviour with the character set
> conversion. If I mount a vfat fs with utf8 and then create a file
> with invalid utf-8 sequences, the file will briefly exist with these
> invalid sequences, then quickly convert to a stripped version.

Yes. utf8 support is broken, and it will fail to convert letter case
on many case. And it's why that is not recommended.

> I haven't found an easy way to catch the race, but if I have
> nautilus open it tends to catch it now and then (I get a file name
> with "<?>" replacing each bad byte).

`?' is meaning the character can't be converted.

> The race also seems to corrupt the in-memory state of the fs now and then. I
> managed to create a file where "ls" shows "?" for most fields. Data seemed to
> have made it to disk ok though (fsck didn't complain and a remount showed
> everything as it should be).

It seems readdir() was success, but stat() was failed. And the dosfsck
doesn't check filename correctly.

Those problem seem to be relateing to poor utf8 support...

> Third, there seems to be a problem with not all syscalls being subjected to the
> NLS transformation. Example:
>
> $ echo foo > baråäö.txt
> $ ls
> foo.txt
> $ echo foo > baråäö.txt
> bash: baråäö.txt: File exists
--
OGAWA Hirofumi <hirofumi@xxxxxxxxxxxxxxxxxx>
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/