ExFAT is on its way to the Linux kernel

There are many technical problems to be solved before this popular, formerly proprietary file system can be in the shipping open-source Linux code.
Written by Steven Vaughan-Nichols, Senior Contributing Editor

Microsoft has made its last remaining File Allocation Table (FAT) file system's intellectual property, the Extended FAT (exFAT) patents, available to Linux and open-source developers via the Open Invention Network (OIN). Now, all that needs to be done is to get exFAT code into the Linux kernel. While some exFAT code has been submitted to Linux via Greg Kroah-Hartman, the stable Linux kernel maintainer, there's a lot of work to be done before the code's ready for prime time.

The code, which was submitted by the Linux developer Valdis Klētnieks, dates from a code leak by Samsung in 2013. Microsoft has not submitted any exFAT code to the kernel. Nor will it. A Microsoft representative said that while "we are supporting the inclusion of exFAT in the Linux kernel, the code submission is being performed by other members of the community."

The Samsung exFAT code never made it into the mainline kernel due to uncertainties about whether Microsoft would enforce its exFAT patents. Even before Microsoft loosened its grip on exFAT, Klētnieks did some cleanup work on the code earlier this year. This code led Senior Linux Developer Ted T'so to suggest: 

"Some kind of declaration from a Microsoft lawyer to OIN might be sufficient.  [to get exFAT into the Linux kernel] This is where asking the LF [Linux Foundation]  if they can bring together a meeting of the minds of LF, OIN, and Microsoft lawyers might make things much easier." 

Several weeks later, Microsoft explicitly opened up the code as part of the OIN's Linux System Definition. Last year, Microsoft joined the OIN open-source patent protection consortium, bringing with it most of its patent portfolio. This new announcement makes it clear that Microsoft is making exFAT available to open-source and Linux developers. 

So much for the legal side. Now for the hard part. Turning the existing code into useful code. It won't be easy.

Even Klētnieks admits:

"The exfat code needs a lot of work to get it into 'real' shape for he fs/ part of the kernel, so put it into drivers/staging/ for now, so that it can be worked on by everyone in the community."

Other developers are less kind. Christoph Hellwig, a senior Linux kernel developer, snapped. This was a "pile of crap" and in no way "up to kernel standards", Hellwig said. Kroah-Hartman knows "the code is horrible," but thinks it's well worth working on since the Linux developers now have access to the full exFAT specification

Not so fast, thinks Linux developer Pali Rohá: 

"This specification is not 'full.' There are missing important details, like how is TexFAT implemented. In that specification is just reference to other unpublished documents. So it is classic MS way, they release something incomplete and incompatible with their own NT implementation, like with FAT32 vs fastfat.sys."

Put it all together, and it's going to be a while before exFAT is available to Linux users. ExFAT is currently used in large-capacity flash devices such as USB sticks and SD cards. 

In the meantime, Linux and Android developers who want their devices to use exFAT will likely continue to use Paragon Software proprietary Microsoft exFAT/NTFS for USB software. 

10 Linux distros: From different to dangerous

Related Stories:

Editorial standards