The FAT file system is the file system used by MS-DOS and earlier versions of Windows. It’s a relatively simple and straightforward file system, supported by just about any operating system, making it the favoured file system on memory cards and the like. FAT is an ECMA and ISO standard, but these only apply for FAT12 and FAT16 without support for long file names, and therein lies a problem.
Long file name support for the FAT file system are covered by Microsoft patents. Microsoft offers licenses for use of the FAT specification with long file name support, asking 0.25 USD per device sold, to a maximum of 250000 USD. Long file name support is what allows FAT to handle file names that are longer than the 8.3 configuration. This 8.3 configuration pre-dates FAT, and was already in use by DEC, Data General, and CP/M before MS-DOS was conceived.
In any case, this patent issue was what caused the fallout between Microsoft and Dutch navigation equipment maker TomTom earlier this year. TomTom didn’t buy the license, but still offered support for long file names in FAT through its use of the Linux kernel. Microsoft sued them for patent infringement, but the two settled their dispute, with TomTom promising to remove the infringing functionality from their devices.
Microsoft claims the lawsuit was an incident, and that the rest of the Linux world have nothing to fear. Still, it is understandable that many Linux device makers who require FAT support aren’t particularly comfortable with a vague promise, and would much prefer a solution where the Linux kernel still offers support for long file names in FAT, but without infringing any Microsoft patents. The ideal situation, obviously, would be to get rid of FAT altogether, but that will take time, and in the meantime, FAT needs to be supported.
Andrew Tridgell, of SAMBA fame, has posted a patch on the LKML that does just that. The new patch offers support for long file names without infringing any of Microsoft’s patents. This isn’t just an empty claim; several patent lawyers with expertise in this area have investigated the patch and concluded that it does not infringe the patents.
In a Q&A about the patch, more details were revealed about how it avoids the patents:
The claims of both of the VFAT patents involve the creation (or storing) of both a long filename and a short filename for a file. The 2nd patch only creates/stores either a short filename or a long filename for a file, but never both. The 11 bytes created by vfat_build_dummy_83_buffer() to pad the field for short filenames cannot be used to access the file, and contain bytes which are invalid in FAT and VFAT filenames, and therefore are not filenames as that term is and has been used in the technical community.
So, are there any downsides to this patch? Well, only if you are unlucky enough to still be using Windows 9x-based or MS-DOS operating systems. Tridgell believes this scenario is too rare to worry about, and there’s always the
msdos file system, which forces 8.3 and doesn’t use long file names altogether.