<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="/source/rss.xsl.xml"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
    <title>Changes in failfs.c</title>
    <description></description>
    <language>en</language>
    <copyright>Copyright 2015</copyright>
    <generator>Java</generator><item>
        <title>cd051cfe1e35a471fc2cdf6d32fae6ee23305ecb - Merge tag &apos;vfs-7.3-rc1.failfs&apos; of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs</title>
        <link>http://kernelsources.org:8080/source/history/linux/fs/failfs.c#cd051cfe1e35a471fc2cdf6d32fae6ee23305ecb</link>
        <description>Merge tag &apos;vfs-7.3-rc1.failfs&apos; of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfsPull failfs filesystem from Christian Brauner: &quot;Add failfs and expose a FD_FAILFS_ROOT sentinel.  This allows userspace to shed their filesystem state completely. A  process with its root or working directory in failfs must anchor every  path lookup at an explicit file descriptor. Absolute paths, absolute  symlinks and AT_FDCWD-relative lookups simply fail.  Failfs is the counterpart to nullfs. nullfs says adds a permanently  empty, immutable directory whose lookups fail with ENOENT but which  can be opened, read, stat&apos;d and mounted upon. Failfs on the other hand  fails every operation. The root cannot be opened at all. A single  instance is mounted during early boot via kern_mount(), which makes it  logically distinct from every mount namespace.  This is accompanied by a new fchroot() system call which makes  chrooting via a file descriptor a first class concept. It&apos;s possible  to chroot into failfs as an unprivileged user provided the task has no  new privileges set&quot;* tag &apos;vfs-7.3-rc1.failfs&apos; of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs:  Documentation: add failfs documentation  selftests/filesystems: add failfs selftests  arch: hookup fchroot() system call  fs: support FD_FAILFS_ROOT in fchroot()  fs: add fchroot()  fs: support FD_FAILFS_ROOT in fchdir()  fs: add failfs

            List of files:
            /linux/fs/failfs.c</description>
        <pubDate>Mon, 17 Aug 2026 18:15:52 +0200</pubDate>
        <dc:creator>Linus Torvalds &lt;torvalds@linux-foundation.org&gt;</dc:creator>
    </item>
<item>
        <title>1d38e750a389e919c1608dbc61cd5c93cd4915dc - Merge patch series &quot;fs: add failfs&quot;</title>
        <link>http://kernelsources.org:8080/source/history/linux/fs/failfs.c#1d38e750a389e919c1608dbc61cd5c93cd4915dc</link>
        <description>Merge patch series &quot;fs: add failfs&quot;Christian Brauner &lt;brauner@kernel.org&gt; says:nullfs provides a permanently empty and immutable directory. Lookupsfail with ENOENT. The directory can be opened, read, stat, mounted upon.It behaves like nothing is there.Add its counterpart failfs where the semantics are not &quot;there isnothing here&quot; but &quot;nothing is supported here&quot;. Every operation thatreaches the filesystem fails with EOPNOTSUPP. Even statfs()/fstatfs()fail so the filesystem cannot be discovered through an fd to it.EOPNOTSUPP rather than a permission errno keeps that coherent. Thereis no permission model in which anything could ever be allowed andEACCES or EPERM would merely suggest that different credentials mightsucceed while EIO would suggest corruption. It also makes hitting thefailfs boundary mostly quite dinstinguishable. A task anchoring itslookups at real directory file descriptors may be able to tell a failfsrefusal from an ordinary permission failure. I wouldn&apos;t go so far asguaranteeing that but it should mostly work.The root cannot be opened at all not even with O_PATH. It is neverreached by a lookup in a parent directory. The only way to a path-walkterminal at the root is a jump through a /proc/&lt;pid&gt;/{root,cwd} magiclink or by mountpoint traversal. The root also refuses-&gt;d_weak_revalidate() which the VFS calls for jumped terminals. Thatcloses every remaining way to reference it. An O_PATHopen is refused and name_to_handle_at() cannot encode it into a filehandle, and following a magic link into it fails. A plain readlink() ofsuch a link still works and shows &quot;failfs:/&quot;.There is a single instance of failfs mounted during early boot viakern_mount() making it logically distinct from every mount namespace.Since the mount is a member of no mount namespace mounting onto itfails. So nothing can ever be mounted on top of it. It cannot be clonedvia OPEN_TREE_CLONE and it does not show up in statmount()/listmount()or /proc/&lt;pid&gt;/mountinfo. The filesystem is not registered so it isnot visible in /proc/filesystems and cannot be mounted from userspace.This lets tasks shed their filesystem state completely. A process withits root directory or working directory in failfs must anchor every pathlookup at an explicit file descriptor or is doomed to fail any lookup.Absolute paths, absolute symlinks, and AT_FDCWD-relative lookupssimply fail. Followup patches will expose it via a new FD_FAILFS_ROOTfile descriptor sentinel understood by fchdir() and the new fchroot()system call.Fun fact, because of how dynamic binary execution work with PT_INTERPthis also currently prevents execution of dynamic binaries becauseloaders have absolute paths (see selftests).* patches from https://patch.msgid.link/20260724-work-failfs-v2-0-485dabbae185@kernel.org:  Documentation: add failfs documentation  selftests/filesystems: add failfs selftests  arch: hookup fchroot() system call  fs: support FD_FAILFS_ROOT in fchroot()  fs: add fchroot()  fs: support FD_FAILFS_ROOT in fchdir()  fs: add failfsLink: https://patch.msgid.link/20260724-work-failfs-v2-0-485dabbae185@kernel.orgSigned-off-by: Christian Brauner (Amutable) &lt;brauner@kernel.org&gt;

            List of files:
            /linux/fs/failfs.c</description>
        <pubDate>Mon, 27 Jul 2026 11:49:54 +0200</pubDate>
        <dc:creator>Christian Brauner &lt;brauner@kernel.org&gt;</dc:creator>
    </item>
<item>
        <title>cdf930a00949af72fbe9a22da2a8efa77981baa7 - fs: support FD_FAILFS_ROOT in fchdir()</title>
        <link>http://kernelsources.org:8080/source/history/linux/fs/failfs.c#cdf930a00949af72fbe9a22da2a8efa77981baa7</link>
        <description>fs: support FD_FAILFS_ROOT in fchdir()Add a new file descriptor sentinel FD_FAILFS_ROOT followingFD_PIDFS_ROOT and FD_NSFS_ROOT and teach fchdir() to accept it. Aprocess calling fchdir(FD_FAILFS_ROOT) moves its working directoryinto failfs. Every AT_FDCWD-relative lookup afterwards fails withEOPNOTSUPP including &quot;.&quot; and &quot;..&quot; and getcwd() reports the workingdirectory as unreachable from the process root by returning a pathprefixed with &quot;(unreachable)&quot;. Lookups relative to explicit directoryfile descriptors are unaffected.The sentinel is the only way in. No privilege or gating is required.Setting the working directory to a directory in which every operationfails grants nothing and loses nothing that closing file descriptorscouldn&apos;t lose. An unlinked working directory behaves the same way todaymodulo errno. The working directory also plays no role in confining &quot;..&quot;resolution so no boundary is weakened.Link: https://patch.msgid.link/20260724-work-failfs-v2-2-485dabbae185@kernel.orgSigned-off-by: Christian Brauner (Amutable) &lt;brauner@kernel.org&gt;

            List of files:
            /linux/fs/failfs.c</description>
        <pubDate>Fri, 24 Jul 2026 15:41:18 +0200</pubDate>
        <dc:creator>Christian Brauner &lt;brauner@kernel.org&gt;</dc:creator>
    </item>
<item>
        <title>fa0d6d945e5ce96cff14b114eec7527f13d7f23a - fs: add failfs</title>
        <link>http://kernelsources.org:8080/source/history/linux/fs/failfs.c#fa0d6d945e5ce96cff14b114eec7527f13d7f23a</link>
        <description>fs: add failfsnullfs provides a permanently empty and immutable directory. Lookupsfail with ENOENT. The directory can be opened, read, stat, mounted upon.It behaves like nothing is there.Add its counterpart failfs where the semantics are not &quot;there isnothing here&quot; but &quot;nothing is supported here&quot;. Every operation thatreaches the filesystem fails with EOPNOTSUPP. Even statfs()/fstatfs()fail so the filesystem cannot be discovered through an fd to it.EOPNOTSUPP rather than a permission errno keeps that coherent. Thereis no permission model in which anything could ever be allowed andEACCES or EPERM would merely suggest that different credentials mightsucceed while EIO would suggest corruption. It also makes hitting thefailfs boundary mostly quite dinstinguishable. A task anchoring itslookups at real directory file descriptors may be able to tell a failfsrefusal from an ordinary permission failure. I wouldn&apos;t go so far asguaranteeing that but it should mostly work.No path lookup can open the root, not even with O_PATH. It is neverreached by a lookup in a parent directory. The only way to a path-walkterminal at the root is a jump through a /proc/&lt;pid&gt;/{root,cwd} magiclink or by mountpoint traversal. The root also refuses-&gt;d_weak_revalidate() which the VFS calls for jumped terminals. Thatcovers the jump-based references too: an O_PATH open is refused,name_to_handle_at() cannot encode it into a file handle, and following amagic link into it fails. A plain readlink() of such a link still worksand shows &quot;failfs:/&quot;.There is a single instance of failfs mounted during early boot viakern_mount() making it logically distinct from every mount namespace.Since the mount is a member of no mount namespace mounting onto itfails. So nothing can ever be mounted on top of it. It cannot be clonedvia OPEN_TREE_CLONE and it does not show up in statmount()/listmount()or /proc/&lt;pid&gt;/mountinfo. The filesystem is not registered so it isnot visible in /proc/filesystems and cannot be mounted from userspace.This lets tasks shed their filesystem state completely. A process withits root directory or working directory in failfs must anchor every pathlookup at an explicit file descriptor or is doomed to fail any lookup.Absolute paths, absolute symlinks, and AT_FDCWD-relative lookupssimply fail. Followup patches will expose it via a new FD_FAILFS_ROOTfile descriptor sentinel understood by fchdir() and the new fchroot()system call.Link: https://patch.msgid.link/20260724-work-failfs-v2-1-485dabbae185@kernel.orgSigned-off-by: Christian Brauner (Amutable) &lt;brauner@kernel.org&gt;

            List of files:
            /linux/fs/failfs.c</description>
        <pubDate>Fri, 24 Jul 2026 15:41:17 +0200</pubDate>
        <dc:creator>Christian Brauner &lt;brauner@kernel.org&gt;</dc:creator>
    </item>
</channel>
</rss>
