This Linux filesystem was supposed to change everything—here's the dark reason it failed

6 min read Original article ↗

4

Graeme Peacock is a seasoned Linux expert with more than 15 years of hands-on experience. He has worked extensively with Ubuntu, Gentoo, Arch Linux, Qubes, and Fedora, gaining deep proficiency in everything from routine terminal operations to highly customized system builds.

Graeme began his journey with Ubuntu, quickly mastering the command line and essential system administration skills. A year later, he moved to Arch Linux, where he spent nearly a decade refining his expertise through the installation and configuration of multiple minimalist systems. After some time, he moved to Gentoo, where he configured and compiled both server and desktop environments using normal and hardened profiles and frequently compiled custom kernels. Graeme moved to Qubes in 2016, where he has remained ever since.

Graeme has extensive experience with highly configurable tools such as Vim, Neovim, and Emacs, and he maintains his own complex configurations. He is also highly proficient with Bash, Zsh, and dozens of utilities.

Graeme holds a B.S. in software engineering and has a strong passion for programming and web development. He is proficient in Golang, Python, Bash, JavaScript, TypeScript, HTML, and CSS. He also has considerable experience with Docker and is currently working on learning Kubernetes.

There are dozens of Linux file systems, and I'm sure you've heard of ReiserFS at least once. It promised a great deal but ultimately failed. I could give you some technical reason for its demise, but that would be dishonest. The true reason is much darker, and if you heard it, you might appreciate your day a little more.

ReiserFS was a project that promised so much in the early days of Linux, and its lead developer—Hans Reiser—had big aspirations for his invention and company (Namesys). ReiserFS took his Linux file system in an entirely new direction with its B-tree index and tail-packing features—something sorely needed at the time. With distros like SUSE adopting it early, the future looked good for Hans Reiser's gem, but fate had other plans.

Problems begging to be fixed

Inefficient searches and storage bogged Linux down

In the early days of Linux, file systems were not as performant as they are now—scalability was a mere afterthought, and Ext2 is a prime example.

Everything is a file on Linux, and directories are no different. What you see as a folder icon is merely an illusion, and the directory is actually a special file that stores directory data. The reality is slightly more complex, involving an inode, but that's the general idea.

To search for a particular filename in a directory, Ext2 performed a linear search of its directory file, which means it checked every file entry one after the other. When a directory contains millions of files (like an email server), and the requests come thick and fast, the server begins to buckle under the enormous pressure.

Linux mascot flying happily above the clouds with the Windows logo behind.

B-tree indexing

A rapid and scalable solution that could handle millions of files

A B-tree is a self-balancing data structure organized like a Christmas tree. To skip all the gory details, their primary benefit to ReiserFS is their astounding speed. For example, searching a tree with trillions of items takes only a few dozen operations. For ReiserFS, storing metadata in the tree meant there was no limit to the number of files a directory could contain—unlike Ext2, which got bogged down for every file added.

ReiserFS also stored everything in the tree—metadata and file data. This was very different for the time and eliminated performance bottlenecks during metadata operations.

Tail packing

A sensible space-saving technique

ReiserFS saved space by packing small files into the same block, which is a small (e.g., 4KB) boundary that most file systems use to assign a standard space. When you save a 6KB file, it allocates two 4KB blocks, with half a block going unused. ReiserFS crammed small files into the unused tail of the block, keeping the number of allocations and wasted space down. Such a technique is useful for servers that host many small files, which were every web, email, and file server at the time.

Tux, the Linux mascot, using a laptop as the Windows logo behind him fades away on a blue background.

From the mainline to the main yard

An unrecoverable error

Linux mascot on a globe holding a flag. Credit: Lucas Gouveia/How-To Geek | eamesBot/Shutterstock

It was looking good for Hans and his team, and in 2001, ReiserFS found its way into the kernel mainline. That lasted for several years until Hans and his company hit a tiny snag: he murdered his wife.

In 2008, the state of California convicted Hans of first-degree murder. He initially denied it at his trial but later confessed on tape for a reduced sentence of second-degree murder—which carries 15 years to life. Hans described punching his wife in the mouth and then strangling her while his children played computer games in another part of the house. He stored her body in the bathroom and then in his car for two days while he searched for a place to bury her.

According to Hans, his wife (a physician) was an "unfathomable" psychopath and a gifted liar who was "jealous of her own children." He also later claimed at a civil trial in 2012 that he was protecting them because she had Munchausen by proxy—a mental disorder where a caregiver fabricates or induces illness in someone under their care. At the same trial, he compared himself to Moses, who murdered a slave master and buried the body in the sand.

Sometime around the first trial, his company had become inactive and ceased all operations. Hans was effectively out of business, and, in the civil trial, he was ordered to pay $60m in damages to his children.

Laptop With Linux Intel NUC13.

Laptop With Linux Intel NUC13

The inevitable demise of ReiserFS

It's not us, it's you

To add to the woes, cracks begun to appear in ReiserFS, from subtle file corruption issues to using outdated kernel APIs. The most pressing issue was that ReiserFS got swept up in the Y2038 problem. While ReiserFS could represent times up to 2106, it did not modernize along with the kernel, and in 2022, it was deprecated in the kernel mainline and then later removed in 2024.


Hans had big plans for ReiserFS, and for a while, his company was delivering. Things were looking up for him, but like the rest of us, he couldn't escape real life. Hans clearly had problems and didn't deal with them. It cost him his freedom, his children, and his dream.

The moral of the story is: if you don’t maintain your code, Linus will delete it from the mainline.

A laptop with Linux, the Windows logo next to it, a swap icon in the center, and a warning sign.