Re: [RFC] vfat: change the default from shortname=lower to shortname=mixed

From: OGAWA Hirofumi
Date: Tue Jun 30 2009 - 16:49:20 EST


Jamie Lokier <jamie@xxxxxxxxxxxxx> writes:

> I agree with the change to "shortname=mixed" being the default.
>
> Not only does it solve problems with Linux seeing files it created
> _itself_ change, "shortname=mixed" is the only option where files
> created on all versions of Windows appear the same in Linux, and vice
> versa. It is better than Windows itself in that respect...
>
> "shortname=winnt" is not as good. It solves the problem of
> Linux<->itself compatibility and Linux<->Windows-NT/2000/XP/Vista
> compatibility, but not Linux<->Windows-95/98/ME compatibility.
>
> I don't see any problems with changing the option from it's default,
> for filesystems which were written as VFAT by any OS. For filesystems
> written as plain FAT, it may change them to appear as upper case in
> Linux, when they previously showed as lower case. If there is a
> reliable way to detect filenames written by a plain FAT system, it
> might be desirable to show the names as lower case from them.
>
> Below are my notes, when I had to add "shortname=mixed" to a program
> because of user bug reports when they created files on various
> versions of Windows and they didn't work on an embedded Linux media
> player. Feel free to use the notes in the Changelog or documentation.
>
> Why use shortname=mixed.
>
> This affects 8.3 filename reading and creation for maximum
> compatibility with the behaviour of all versions of Windows.
>
> There is a classic conflict between Windows 95 derivatives and
> Windows NT derivatives, which causes spurious case changes when
> moving some file names between them on removable media. This
> Linux setting manages to be compatible with both of them reliably,
> and is therefore superior to all versions of Windows.
>
> 1. Filename reading uses the algorithm of Windows NT: if there
> is only an 8.3 short name, its case is calculated from flags in
> byte 12 of the short name entry.
>
> This is needed for compatibility with files written by Windows
> NT derivatives (including 2000, XP and Vista). When Windows NT
> creates two files called "PLAYLIST" and "file.ogg", the default
> Linux algorithm ("shortname=lower") would see them as
> "playlist" and "file.ogg" together, and the Windows 95
> algorithm would see them as "PLAYLIST" and "FILE.OGG" together.
> Both cause problems.
>
> 2. Filename creation uses the algorithm of Windows 95: Linux
> creates a long name entry unless the original name fits into
> 8.3 and is entirely upper case. This is more compatible than
> shortname=winnt, because it creates a long name in more cases
> to remove uncertainty.
>
> This is needed for compatability with files created by Linux
> and read by Windows 95 derivatives (and MS-DOS). Windows 95
> derivatives and MS-DOS interpret short name entries as upper
> case, even when case flags are set in byte 12. By storing a
> long name entry, files stored by Linux will be read in the
> desired case by all versions of Windows.
>
> The patch has my
>
> Signed-Off-By: Jamie Lokier <jamie@xxxxxxxxxxxxx>

Thanks for comment. I don't know whether signed-off-by is desirable for
this, so I'll add one Acked-by: simply if I apply this. Is it ok?

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