Linux VFAT Filesystem
Linux VFAT Filesystem Page
The VFAT filesystem is a Linux filesystem that is compatible with
Windows 95 and Windows NT long filenames on the FAT filesystem.
It does not read NTFS filesystem. To do this, get the readonly
NTFS filesystem for Linux by Martin von Loewis.
You can get find
FAT32 support here.
The vfat filesystem used to be named xmsdos, but it was renamed to vfat.
Older versions still use the xmsdos name. As of Linux 1.3.60, the
vfat filesystem is part of the Linux kernel distribution so you will
no longer need any of the packages here if you have a 1.3.60 or later
kernel. You can still find some documentation, test cases, updated,
and examples here. Each patch is a self-contained patch against some
kernel. You only need to get one patch to apply. To reverse an old patch
so that you can apply a new one, use
patch -R < old_patch_file
VFAT Specific Mount Options For vfat-0.3.9
- utf8 - Convert between 16 bit Unicode for on
disk storage and 8 bit Unicode, utf, as specified by the Unicode
Consortium.
- uni_xlate - This converts Unicode characters that do
not have a Unicode to ASCII mapping into 4 byte sequences. The
sequence consists of a colon as the escape character (Note:
a colon is normally an invalid vfat character) followed by three
ascii characters. This allows backup and restores of vfat
filesystems that uses Unicode. If this
mount option is not used, a '?' is used when a Unicode character
cannot be translated.
- nonumtail - When creating 8.3 aliases, normally
the alias will end in '~1' or tilde followed by some number. If this
option is set, then if the filename is "longfilename.txt" and
"longfile.txt" does not currently exist in the directory,
"longfile.txt" will be the short alias instead of "longfi~1.txt".
This corresponds to the NameNumericTail option in Windows 95 for
the vfat filesystem.
- posix - This is not complete yet. Currently,
it allows names such as 'LongFileName' and 'longfilename' to
coexist peacefully in the same directory. Normally, this would not
be allowed. However, 'Test' and 'test' cannot peacefully current
coexist in the same directory yet, so the posix compatibility is
not yet complete. This has to do with the issue of conflicts between
aliases and regular filenames.
VFAT Test Suite (written in Tcl).
VFAT Distributions (with Kernel Patches)
As of the 1.3.93 kernel, no kernel patch is needed.
vfat-0.3.9.tgz
- Patch made against 1.3.92. It should work on kernels from 1.3.8x
to 1.3.92.
- This patch has been incorporated into the 1.3.92 kernel.
- Fixes a problem in the msdos and vfat filesystems where moving an
open file causes all subsequent writes to that file to be lost.
vfat-0.3.8.tgz
- Patch made against 1.3.72. It should work on the 1.3.72 kernel only.
- This patch has been incorporated into 1.3.73.
- Adds no new fixes or features over vfat-0.3.7 release. Just
synchronizes with 1.3.72 kernel.
vfat-0.3.7.tgz
- Patch made against 1.3.71. It should work for all kernels from
1.3.69 to 1.3.71. Kernels before 1.3.69 will not work.
- This patch has been incorporated into 1.3.73.
- Fixes a problem where FAT mount options will not be parsed correctly.
VFAT did a destructive parse of the mount options before passing
them on to the FAT mount option parser.
- Fixed a bug when the nonumtail mount option was used. The
problem could cause the same shortname alias to be created
multiple times.
vfat-0.3.6.tgz
- Patch made against 1.3.71. It should work for all kernels from
1.3.69 to 1.3.71. Kernels before 1.3.69 will not work.
- This patch has been incorporated into 1.3.73.
- Fixes a problem where FAT mount options will not be parsed correctly.
VFAT did a destructive parse of the mount options before passing
them on to the FAT mount option parser. (Partial fix only)
vfat-0.3.5.tgz
- Patch made against 1.3.71. It should work for all kernels from
1.3.69 to 1.3.71. Kernels before 1.3.69 will not work.
- This patch was incorporated into 1.3.72.
- A non-empty directory could be removed with rmdir. vfat_empty
was not properly bracketed, causing this problem.
- The directory caching mechanism was broken when moving files.
This could cause files that had been moved to still show up
under the previous name when accessed directly by name. For example,
the would occur when doing a 'mv file file~' and then 'ls -l file'.
vfat-0.3.4.tgz
- Patch made against 1.3.69. It should work for all kernels from
1.3.69 to 1.3.7?. Kernels before 1.3.69 will not work.
- This patch has not been applied to any kernel at least through 1.3.69.
- Characters that should have been in the alias base that should
have been replaced by an underscore were not. This did not
allow the creation of names such as 'test;x1.txt".
- Added a posix mount option. This is not
complete yet. Currently,
it allows names such as 'LongFileName' and 'longfilename' to
coexist peacefully in the same directory. Normally, this would not
be allowed. However, 'Test' and 'test' cannot peacefully current
coexist in the same directory yet, so the posix compatibility is
not yet complete. This has to do with the issue of conflicts between
aliases and regular filenames.
- Added a nonumtail mount option.
When creating 8.3 aliases, normally
the alias will end in '~1' or tilde followed by some number. If this
option is set, then if the filename is "longfilename.txt" and
"longfile.txt" does not currently exist in the directory,
"longfile.txt" will be the short alias instead of "longfi~1.txt".
This corresponds to the NameNumericTail option in Windows 95 for
the vfat filesystem.
vfat-0.3.3.tgz
- Patch made against 1.3.66. It should work for all kernels from
1.3.62 to 1.3.68. Kernels before 1.3.62 probably will not work.
- This patch has not been applied to any kernel at least through 1.3.69.
- Added support for a Unicode to text translation with
uni_xlate
mount option. This converts Unicode characters that do not
have a Unicode to ASCII mapping into 4 byte sequences. The
sequence consists of a colon as the escape character (Note:
a colon is normally an invalid vfat character) followed by three
ascii characters. This allows backup and restores of vfat
filesystems that uses Unicode. If the uni_xlate
mount option is not used, a '?' is used when a Unicode character
cannot be translated.
- Fixed problem where characters that are not on a supported unicode
page (specified by the 2nd byte) would cause a crash.
- Added directory caching code to speed up 'ls' type operations.
- Same bug fix as in 0.2.1. Bug was reintroduced in code merge.
This bug fix was part of the 1.3.63 kernel (I think).
vfat-0.3.2.tgz
- Patch made against 1.3.62.
- This patch has not been applied to any kernel at least through 1.3.69.
- Fixed up the test suite to make it work in multiple passes. Also
added an interactive option.
- Fixed the kernel stack corruption problem by redoing the vfat_find()
routine. This needed to be replaced anyway, so now everything goes
through fat_readdirx().
- Fixed a problem when trying to move directories underneath
themselves. Not everything would be properly released, causing
the filesystem to be unmountable.
vfat-0.3.1.tgz
- This patch has been integrated into the standard kernel as of 1.3.62.
- For Linux 1.3.60 and 1.3.61, this is a patch that adds an ioctl to
allow Samba to work better with the vfat code.
- Fixes a problem with the sys_immutable option.
For Linux 1.3.59, the vfat and msdos filesystems have been merged in the
source code. This should not cause any problems, but if it could since
this is no longer the standard, safe msdos filesystem. The
sys_immutable
mount option was added to let you specify that system files are immutable.
This is really for use with the msdos filesystem, not vfat. Get
For Linux 1.3.55, use
For Linux 1.3.45, use
For Linux kernels up to 1.3.3x, you can try
For Linux 1.2.x kernels, use
This version has two bug fixes for serious problems that were fixed in
the 1.3.x series. I've added these fixes to xmsdos because there are still
quite a few people using the 1.2.x kernels.
Back to Gordon's Home Page.