The Linux 7.3 Kernel Drops EFS and FreeVxFS and Gains FailFS

Translated by a model; the original is in Russian.

· Linux and open source
In the Linux 7.3 development cycle, Linus Torvalds has accepted early pull requests: two ancient file systems have been removed from the kernel, and in their place comes a pseudo-filesystem that refuses to do anything.

cover.svg

Among the first pull requests Linus Torvalds has accepted for the Linux 7.3 kernel development cycle are the removal of several obsolete file systems and the addition of one new pseudo-filesystem with an unusual purpose.

Farewell to the relics

As expected, the kernel has dropped the FreeVxFS driver — an open-source, read-only implementation of the Veritas VxFS file system once used in HP-UX and SCO UnixWare. According to the patch authors, providing compatibility with the “old-school” Unix systems of the 1990s was exciting a quarter of a century ago, but today the code mostly serves as fodder for automated bug analyzers. Over the past 15 years, the driver has had only a single known user, who was also its contributor.

A separate request also removed EFS — the read-only on-disk format that SGI used in IRIX before XFS came along. This driver had gone unmaintained for more than 20 years. Together, the removal of EFS and FreeVxFS stripped about 3.7 thousand lines of code out of the kernel.

FailFS: the file system that can't do anything

In their place, Linux 7.3 introduces a new driver, FailFS, complementing the recently accepted NULLFS. Where NULLFS provides a permanently empty, immutable directory in which lookups fail with ENOENT but which can still be opened, read, stat'd and mounted over, FailFS takes the idea to its extreme: any operation that reaches this file system returns EOPNOTSUPP (“operation not supported”). The root itself can't even be opened.

The point is to let a process completely reset its file system state. Developer Christian Brauner explains: a task whose root or working directory is in FailFS is forced to bind every path lookup to an explicit file descriptor. Absolute paths, absolute symbolic links and lookups relative to AT_FDCWD simply fail. A single FailFS instance is mounted early in the boot process via kern_mount(), which makes it logically separate from all mount namespaces.

Alongside the driver comes a new system call, fchroot(), which turns changing the root via a file descriptor into a full-fledged concept. Even an unprivileged user can chroot into FailFS — provided the task has the “no new privileges” flag set. The whole of FailFS, documentation included, takes up just 931 lines of code.

And a note on NILFS2

As part of the same series of VFS requests, the rarely mentioned NILFS2 file system was also updated: reads with the O_DIRECT flag have been switched over to the IOmap infrastructure.


Source: Phoronix

Comments

Sign in, to comment.

  • No comments yet.