mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [GIT PULL 00/18 for v7.3] v7.3
@ 2026-08-14 13:07 Christian Brauner
  2026-08-14 13:10 ` [GIT PULL 01/18 for v7.3] ipc misc Christian Brauner
                   ` (17 more replies)
  0 siblings, 18 replies; 38+ messages in thread
From: Christian Brauner @ 2026-08-14 13:07 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: Christian Brauner, linux-fsdevel, linux-kernel

Hey Linus,

This is the batch of pull requests for the v7.3 merge window.

We remove three subsystems taking about five thousand lines with them.
These are very old filesystem drivers. EFS, the read-only SGI IRIX
format that predates XFS, has been orphaned and goes. freevxfs goes too.
Cachefiles ondemand mode also goes out now that EROFS over fscache,
its only in-tree user, has been removed.

I've sent the pull request that makes kernel threads stop sharing
filesystem state with userspace which I've kept in -next continously for
multiple cycles. So kernel threads no longer share filesystem state with
PID 1. Since the beginning, init_task, PID 1 and every kthread have
shared one fs_struct, which is why pivot_root() rewrites the fs_struct
of all kthreads and why userspace can move the ground out from under the
kernel.

PID 1 now gets its own fs_struct and kthreads are anchored in a private
nullfs instance that cannot be mounted on and cannot be used to follow
other mounts. So path lookup from a kthread fails by default. Anything
that legitimately needs to look something up in init's filesystem state
must opt-in explicitly via scoped_with_init_fs().

This also sees the addition of a minimal new pseudofs called "failfs"
which came out of some requests to shed fs state for lookup purposes
without having to resort to any namespace shenanigans. In failfs every
operation fails and is the counterpart to nullfs. Its root cannot be
opened at all. A single instance is mounted during early boot and
belongs to no mount namespace. This lets a task shed its filesystem
state completely. With its root or working directory in failfs it must
anchor every lookup at an explicit file descriptor. failfs is reachable
through FD_FAILFS_ROOT which is understood by fchdir() and by the new
fchroot() system call.

Overlayfs learns to support idmapped mounts itself so a whole merged
tree can be shown under a different ownership.

We now make it possible to share a block device between multiple
superblocks. erofs can mount read-only blob devices shared between many
superblocks. Because we only tracked a single superblock a freeze, thaw,
removal or sync on such a device was never propagated to all the
superblocks using it. And there was no way to find them. So add an
efficient table to lookup all superblocks using a given block device. A
bunch of pre-existing fixes fell out of this work as well.

Another chunk is iomap's conversion to a single ->iomap_next() callback
which finishes the move to an iterator model. Every iomap operation
drove its iteration through a struct iomap_ops holding ->iomap_begin()
and ->iomap_end(). That means every step of every iteration is an
indirect call. The work this cycle collapses both into one
->iomap_next() callback that finishes the previous mapping and produces
the next one. This lets callers inline the iteration loop and pass its
->iomap_next() as a compile time constant. That means the compiler can
turn it into a direct and hence inlineable call.

We've also changed sync_inode_metadata() and
writeback_single_inode(). They now persist not only the inode but all
metadata associated with it. A new .sync_inode_metadata superblock
operation is called from __writeback_single_inode(). Alongside it a new
I_METADATA_WRITEBACK state flag is added. So filesystems no longer need
their own mmb_fsync() implementations and can just use simple_fsync().
All metadata is now written for IS_SYNC and IS_DIRSYNC inodes. Races
where several fsyncs raced and mmb_sync() could return before all
buffers were really persisted are fixed since I_SYNC now serializes
properly. The I_METADATA_WRITEBACK scheme also fixes the case where a
WB_SYNC_NONE writeback landing between write(2) and fsync(2) left
fsync(2) failing to persist the inode. That problem is not specific to
filesystems using the generic metadata bh tracking, and the ones that do
not are left alone.

lookup_open() is refactored so that mnt_want_write(), the parent
locking and the delegated_inode retry loop live inside it. nfsd gets a
vfs_lookup_open() to reuse and thus stops open-coding the helper.
audit_inode_child() is now also called on failure there. This matches
what vfs_create() and vfs_mkdir() have always done. And the excl
argument to ->create() is removed.

binfmt_misc sees the largest rework. I've upstreamed a bunch of fixes
you merged during this cycle already. They fell out of this work (two
write access imbalances on interpreter files, an out-of-bounds flag scan
when a register string uses a flag character as its delimiter, and an
'F' entry that could pin its own instance). The new work adds support
for having dynamic policies for how to execute binaries. E.g., this
allows for the interpreter to be computed per binary. That is what
relocatable, hermetic binaries in Nix-style store layouts have needed,
where the right dynamic loader can only be determined relative to the
location of the binary itself and neither PT_INTERP nor a fixed
interpreter string can express it. But the mechanism allows for generic
policies to be expressed.

Thanks!
Christian

^ permalink raw reply	[flat|nested] 38+ messages in thread

end of thread, other threads:[~2026-08-17 22:26 UTC | newest]

Thread overview: 38+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-08-14 13:07 [GIT PULL 00/18 for v7.3] v7.3 Christian Brauner
2026-08-14 13:10 ` [GIT PULL 01/18 for v7.3] ipc misc Christian Brauner
2026-08-17 22:25   ` pr-tracker-bot
2026-08-14 13:11 ` [GIT PULL 02/18 for v7.3] kernel misc Christian Brauner
2026-08-17 22:25   ` pr-tracker-bot
2026-08-14 13:11 ` [GIT PULL 03/18 for v7.3] vfs binfmt Christian Brauner
2026-08-17 22:25   ` pr-tracker-bot
2026-08-14 13:11 ` [GIT PULL 04/18 for v7.3] vfs efs Christian Brauner
2026-08-17 22:25   ` pr-tracker-bot
2026-08-14 13:11 ` [GIT PULL 05/18 for v7.3] vfs failfs Christian Brauner
2026-08-17 22:25   ` pr-tracker-bot
2026-08-14 13:12 ` [GIT PULL 06/18 for v7.3] vfs fat Christian Brauner
2026-08-17 22:25   ` pr-tracker-bot
2026-08-14 13:12 ` [GIT PULL 07/18 for v7.3] vfs freevxfs Christian Brauner
2026-08-17 22:25   ` pr-tracker-bot
2026-08-14 13:12 ` [GIT PULL 08/18 for v7.3] vfs iomap Christian Brauner
2026-08-17 22:25   ` pr-tracker-bot
2026-08-14 13:12 ` [GIT PULL 09/18 for v7.3] vfs kfunc Christian Brauner
2026-08-17 22:25   ` pr-tracker-bot
2026-08-14 13:12 ` [GIT PULL 10/18 for v7.3] vfs kthread Christian Brauner
2026-08-17 22:25   ` pr-tracker-bot
2026-08-14 13:13 ` [GIT PULL 11/18 for v7.3] vfs lookup Christian Brauner
2026-08-17 22:25   ` pr-tracker-bot
2026-08-14 13:13 ` [GIT PULL 12/18 for v7.3] vfs misc Christian Brauner
2026-08-17 22:25   ` pr-tracker-bot
2026-08-14 13:13 ` [GIT PULL 13/18 for v7.3] vfs mount Christian Brauner
2026-08-17 22:25   ` pr-tracker-bot
2026-08-14 13:14 ` [GIT PULL 14/18 for v7.3] vfs netfs Christian Brauner
2026-08-17 22:25   ` pr-tracker-bot
2026-08-14 13:14 ` [GIT PULL 15/18 for v7.3] vfs nilfs2 Christian Brauner
2026-08-14 17:26   ` Viacheslav Dubeyko
2026-08-17  7:30     ` Christian Brauner
2026-08-14 13:14 ` [GIT PULL 16/18 for v7.3] vfs ovl Christian Brauner
2026-08-17 22:25   ` pr-tracker-bot
2026-08-14 13:14 ` [GIT PULL 17/18 for v7.3] vfs super Christian Brauner
2026-08-17 22:25   ` pr-tracker-bot
2026-08-14 13:15 ` [GIT PULL 18/18 for v7.3] vfs sync Christian Brauner
2026-08-17 22:25   ` pr-tracker-bot

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®