Linux creator and principal developer Linus Torvalds has come out against the ZFS filesystem. The timing of this cannot be ignored, as only recently ZFS has found its first official implementation within a major distribution release. Said release was Ubuntu 19.10, wherein the ZFS filesystem was touted as one of the main features of the latest iteration of Canonical’s take on Linux.
In a forum posting, Torvalds wrote, “If somebody adds a kernel module like ZFS, they are on their own. I can’t maintain it, and I can not be bound by other people’s kernel changes.”
If one only considers Torvalds’ post, it would be easy to conclude his issue with ZFS stems from potential licensing issues. “There is no way I can merge any of the ZFS efforts until I get an official letter from Oracle that is signed by their main legal counsel or preferably by Larry Ellison himself that says that yes, it’s ok to do so and treat the end result as GPL’d,” he wrote.
The issue of licensing goes deeper. Consider that the ZFS on Linux port depends on two deprecated kernel functions, __kernel_fpu_begin() and __kernel_fpu_end(). The functions that replaced __kernel_fpu_begin() and __kernel_fpu_end() were deliberately released as GPL-only.
So if Oracle has yet to sign off on ZFS being GPL’d, and two deprecated functions ZFS depends upon have been replaced by GPL-only functions, there’s a problem (even if it’s only of an ideological nature for the time being).
But this isn’t all about the GPL. What started this issue was a complaint that the Linux kernel recently broke the out-of-tree ZFS module. To that, Torvalds said, “Note that ‘we don’t break users’ is literally about user-space applications, and about the kernel I maintain.” Torvalds then, once again, brings it back to a licensing issue by stating, “But considering Oracle’s litigious nature, and the questions over licensing, there’s no way I can feel safe in ever doing so.”
There are other issues with ZFS. The biggest is that it breaks the OSI 7-layer model. To be specific, ZFS circumvents trust of the lower layers of the Open Systems Interconnection (OSI) model by using error correction of its own. Remember, the goal of the OSI 7-layer model is the interoperability of diverse communication systems with standard communication protocols. So you have an entire file system that shuns a model that Linux depends upon.
To complicate matters, ZFS offers features found in few production-ready Linux file systems. The only file system that comes close is Btrfs, which has been often maligned as not being stable enough for production systems.
In the end, Torvolds says, “Don’t use ZFS. It’s that simple. It was always more of a buzzword than anything else, I feel, and the licensing issues just make it a non-starter for me.” He adds a bit of specificity to his pronouncement by saying, “The benchmarks I’ve seen do not make ZFS look all that great. And as far as I can tell, it has no real maintenance behind it either anymore, so from a long-term stability standpoint, why would you ever want to use it in the first place?”
As for Canonical’s take on this development? “In light of recent ZFS discussions, our customers and users tell us they want ZFS in Ubuntu since it has many desirable features that protect against data corruption, supports high storage capacities, offers efficient data compression, snapshots and copy-on-write clones to name just a few,” wrote Martin Wimpress, Canonical Engineering Director at Canonical, via email. “We will continue to work with our friends in the OpenZFS project to improve the ZFS story on Ubuntu.”
One can only wonder what’s in store for the ZFS file system. Might Oracle re-license the code such that is becomes “friendly” with the mainline kernel? If not, chances are the standoff between Torvalds and ZFS will continue.