* [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
* [GIT PULL 01/18 for v7.3] ipc misc
2026-08-14 13:07 [GIT PULL 00/18 for v7.3] v7.3 Christian Brauner
@ 2026-08-14 13:10 ` 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
` (16 subsequent siblings)
17 siblings, 1 reply; 38+ messages in thread
From: Christian Brauner @ 2026-08-14 13:10 UTC (permalink / raw)
To: Linus Torvalds; +Cc: Christian Brauner, linux-fsdevel, linux-kernel
Hey Linus,
/* Summary */
This rejects mq_notify() with a zero signal number.
/* Testing */
No build failures or warnings were observed.
/* Conflicts */
Merge conflicts with mainline
=============================
No known conflicts.
Merge conflicts with other trees
================================
No known conflicts.
The following changes since commit dc59e4fea9d83f03bad6bddf3fa2e52491777482:
Linux 7.2-rc1 (2026-06-28 12:01:31 -0700)
are available in the Git repository at:
git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/ipc-7.3-rc1.misc
for you to fetch changes up to 1184f5e8200902cae3e098ac68d8600ecdf6fe28:
mqueue: reject mq_notify with signo 0 (2026-06-29 10:29:28 +0200)
----------------------------------------------------------------
ipc-7.3-rc1.misc
Please consider pulling these changes from the signed ipc-7.3-rc1.misc tag.
Thanks!
Christian
----------------------------------------------------------------
Yi Xie (1):
mqueue: reject mq_notify with signo 0
ipc/mqueue.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
^ permalink raw reply [flat|nested] 38+ messages in thread
* [GIT PULL 02/18 for v7.3] kernel misc
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-14 13:11 ` 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
` (15 subsequent siblings)
17 siblings, 1 reply; 38+ messages in thread
From: Christian Brauner @ 2026-08-14 13:11 UTC (permalink / raw)
To: Linus Torvalds; +Cc: Christian Brauner, linux-fsdevel, linux-kernel
Hey Linus,
/* Summary */
- fix coding style in the exit path
/* Testing */
No build failures or warnings were observed.
/* Conflicts */
Merge conflicts with mainline
=============================
No known conflicts.
Merge conflicts with other trees
================================
No known conflicts.
The following changes since commit dc59e4fea9d83f03bad6bddf3fa2e52491777482:
Linux 7.2-rc1 (2026-06-28 12:01:31 -0700)
are available in the Git repository at:
git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/kernel-7.3-rc1.misc
for you to fetch changes up to d7337cad4dbe6caf9535d3539daed353dd425dc1:
kernel: exit: fix coding style missing spaces (2026-06-29 10:29:22 +0200)
----------------------------------------------------------------
kernel-7.3-rc1.misc
Please consider pulling these changes from the signed kernel-7.3-rc1.misc tag.
Thanks!
Christian
----------------------------------------------------------------
mingzhu wang (1):
kernel: exit: fix coding style missing spaces
kernel/exit.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
^ permalink raw reply [flat|nested] 38+ messages in thread
* [GIT PULL 03/18 for v7.3] vfs binfmt
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-14 13:11 ` [GIT PULL 02/18 for v7.3] kernel misc Christian Brauner
@ 2026-08-14 13:11 ` 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
` (14 subsequent siblings)
17 siblings, 1 reply; 38+ messages in thread
From: Christian Brauner @ 2026-08-14 13:11 UTC (permalink / raw)
To: Linus Torvalds; +Cc: Christian Brauner, linux-fsdevel, linux-kernel
Hey Linus,
/* Summary */
This contains a bunch of work for binfmt_misc. It fixes a bunch of old
bugs, reworks the locking, and then extends the format registry so a
binary type can be matched programmatically and its interpreter computed
per exec instead of being a fixed string recorded at registration time.
This allows nixos and other to e.g., implement relocatable binaries
meaning the interpreter/dynamic loader can be determined
programatically, say found relative to the binary. The mechanism is
flexible and can support other policies:
- Handler lookup is now an rcu walk. An exec that matches no binfmt_misc
entry should now never writes to a shared cacheline.
- remove the VERBOSE_STATUS and USE_DEBUG compile time toggles
- convert the entry file to a seq_file which simplifies things quite a
bit and kills a lot of custom logic
- make flags proper enums
- rename struct Node to binfmt_misc_entry
- allow entries to be removed with unlink(2)
- Add the ability to attach bpf programs to binfmt_misc entries so it's
possible to dynamically choose the execution environment such as the
loader or interpreter on a per binary basis.
A handler is an instance of a binfmt_misc_ops struct_ops with a
->match() and a ->load() program. match() decides from the entry
lookup walk whether the handler applies under the same
registration-order. It can read file content as needed not only the
prefetched 256 bytes in bprm->buf.
load() then selects the interpreter and stages it through the new
bpf_binprm_set_interp(), bpf_binprm_set_interp_arg() and
bpf_binprm_set_flags() kfuncs.
Handlers are published in a registry keyed by the registering task's
user namespace and activated through the existing text interface with
a new 'B' type carrying the handler name:
echo ':origin:B::::nix:' > /proc/sys/fs/binfmt_misc/register
The permission and namespacing model is unchanged. Activating a
handler requires the same write access to an instance as any other
registration. A container mounting its own instance escapes the host's
entries exactly as before. The computed interpreter is opened with
open_exec() under the caller's credentials and goes through full LSM
vetting as the next binprm level. A program can only ever redirect the
caller to something the caller could exec anyway.
- Two dispatch modes are added. So far the chosen interpreter owns the
whole process identity (argv[0], /proc/pid/cmdline, /proc/self/exe
all name interpreter information). So relocatable find the dynamic
linker instead. Also a binary passed to execveat() as an inaccessible
O_CLOEXEC fd cannot run at all and gdb trips because AT_ENTRY and
AT_PHDR do not match the exe file. So PIE symbols are unrelocated.
This adds transparent dispatch which allows the interpreter to load
the binary through AT_EXECFD and leaves the argument vector exactly as
the caller built it and labels mm->exe_file and comm with the binary.
It also raises the AT_FLAGS_TRANSPARENT_INTERP aux vector bit. The
interpreter keeps control of mapping the binary.
The second mode is loader substitution. This allows a binary to be
executed natively and only the interpreter to be changed.
- Last, interpreters can be bound at registration time. Each interpreter
is opened by its own write with the credentials the entry file was
opened with. The program picks one per exec with
bpf_binprm_select_interp(). Ucounts are used to properly account for
pre-opened interpreters via
/proc/sys/user/max_binfmt_misc_interpreters.
/* Testing */
No build failures or warnings were observed.
/* Conflicts */
Merge conflicts with mainline
=============================
No known conflicts.
Merge conflicts with other trees
================================
No known conflicts.
The following changes since commit b8206f516fe7cbe785cf44bf09c17c438d7c3cad:
binfmt_misc: don't leak the user namespace when the mount fails (2026-07-28 15:51:25 +0200)
are available in the Git repository at:
git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/vfs-7.3-rc1.binfmt
for you to fetch changes up to 68aabd01ddd26ced458a9e5716a640eaf8e4b7a6:
Merge patch series "binfmt_misc: bound the interpreters an entry can pre-open" (2026-08-03 23:36:38 +0200)
----------------------------------------------------------------
vfs-7.3-rc1.binfmt
Please consider pulling these changes from the signed vfs-7.3-rc1.binfmt tag.
Thanks!
Christian
----------------------------------------------------------------
Christian Brauner (67):
binfmt_misc: convert entry list to an hlist
binfmt_misc: use RCU for the handler lookup
binfmt_misc: annotate racy accesses to ->enabled
binfmt_misc: turn the entry bit numbers into a proper enum
binfmt_misc: turn the entry behavior flags into an enum
binfmt_misc: rename Node to struct binfmt_misc_entry
binfmt_misc: remove the VERBOSE_STATUS toggle
binfmt_misc: use print_hex_dump_debug() for the register debug output
binfmt_misc: convert the entry file to seq_file
binfmt_misc: factor out the entry matching
binfmt_misc: rename load_binfmt_misc() to current_binfmt_misc()
binfmt_misc: return errors directly in load_misc_binary()
binfmt_misc: give the parse_command() results names
binfmt_misc: factor out the entry removal
binfmt_misc: simplify check_special_flags()
binfmt_misc: use a flexible array member for the register string
binfmt_misc: split the field parsing out of create_entry()
binfmt_misc: use __free(kfree) in bm_register_write()
binfmt_misc: assorted small cleanups
binfmt_misc: include what is used
binfmt_misc: allow removing entries via unlink(2)
Merge patch series "binfmt_misc: write access fixes, RCU handler lookup and cleanups"
exec: stash bpf-selected interpreter state in struct linux_binprm
binfmt_misc: add binfmt_misc_ops bpf struct_ops
binfmt_misc: let the entry lookup walk sleep
binfmt_misc: wire up bpf-backed 'B' entries
bpf: allow fs kfuncs for binfmt_misc_ops programs
binfmt_misc: let bpf handlers pass an argument to the interpreter
binfmt_misc: let a bpf handler choose the invocation flags per exec
Merge patch series "binfmt_misc: bpf-backed binary type handlers"
binfmt_misc: require an absolute interpreter path with 'C'
docs, binfmt_misc: keep general usage out of the handler sections
binfmt_misc: table-drive the register string flags
binfmt_misc: normalize the per-exec invocation flags
binfmt_misc: split out entry_open_interpreter() and build_interp_argv()
exec: release the replaced file with do_close_execat()
selftests/exec: convert the binfmt_misc bpf test to the kselftest harness
exec: add AT_FLAGS_TRANSPARENT_INTERP
exec: label mm->exe_file with the binary for a transparent dispatch
binfmt_misc: add transparent interpreter dispatch
binfmt_misc: add a static transparent flag 'T'
binfmt_misc: let a bpf handler run the interpreter transparently
selftests/exec: test the transparent binfmt_misc mode
binfmt_misc: document the transparent identity contract
exec: carry a PT_INTERP substitute in struct linux_binprm
binfmt_elf: consume a stashed PT_INTERP substitute
binfmt_elf_fdpic: consume a stashed PT_INTERP substitute
binfmt_misc: add the 'L' loader substitution flag
binfmt_misc: let a bpf handler request loader substitution
selftests/exec: test binfmt_misc loader substitution
binfmt_misc: document loader substitution
Merge patch series "binfmt_misc: transparent interpreters and PT_INTERP loader substitution"
binfmt_misc: let a register string create an entry disabled
selftests/exec: check that a binfmt_misc instance cannot be pinned
selftests/exec: let binfmt_flag_supported() return a bool
selftests/exec: test registering an entry disabled
binfmt_misc: document registering an entry disabled
selftests/exec: share the bpf handler preconditions
binfmt_misc: carry pre-opened interpreters in struct binfmt_misc_interp
binfmt_misc: let a 'B' entry bind its interpreters
selftests/exec: test interpreters bound to a 'B' entry
binfmt_misc: document interpreters bound by a 'B' entry
Merge patch series "binfmt_misc: bind interpreters to a bpf-backed entry"
binfmt_misc: correctly account pre-opened interpreters
selftests/exec: test the pre-opened interpreter limit
binfmt_misc: document the pre-opened interpreter limit
Merge patch series "binfmt_misc: bound the interpreters an entry can pre-open"
Farid Zakaria (1):
selftests/exec: add binfmt_misc bpf-backed handler test
Documentation/admin-guide/binfmt-misc.rst | 246 ++-
fs/Kconfig.binfmt | 14 +
fs/Makefile | 1 +
fs/binfmt_elf.c | 10 +-
fs/binfmt_elf_fdpic.c | 11 +-
fs/binfmt_misc.c | 1618 ++++++++++++++------
fs/binfmt_misc_bpf.c | 434 ++++++
fs/bpf_fs_kfuncs.c | 28 +-
fs/exec.c | 88 +-
include/linux/binfmt_misc.h | 113 ++
include/linux/binfmts.h | 40 +-
include/linux/user_namespace.h | 3 +
include/uapi/linux/binfmts.h | 7 +
kernel/ucount.c | 6 +
kernel/user.c | 4 +-
tools/testing/selftests/exec/.gitignore | 11 +
tools/testing/selftests/exec/Makefile | 93 ++
tools/testing/selftests/exec/binfmt_bind_interp.c | 14 +
tools/testing/selftests/exec/binfmt_bpf_app.c | 12 +
tools/testing/selftests/exec/binfmt_bpf_interp.c | 15 +
.../testing/selftests/exec/binfmt_loader_payload.c | 146 ++
tools/testing/selftests/exec/binfmt_misc_bpf.c | 638 ++++++++
tools/testing/selftests/exec/binfmt_misc_common.h | 315 ++++
.../testing/selftests/exec/binfmt_misc_disabled.c | 172 +++
.../selftests/exec/binfmt_misc_interplimit.c | 232 +++
tools/testing/selftests/exec/binfmt_misc_loader.c | 372 +++++
tools/testing/selftests/exec/binfmt_misc_selfpin.c | 158 ++
.../selftests/exec/binfmt_misc_transparent.c | 95 ++
.../selftests/exec/binfmt_transparent_interp.c | 112 ++
tools/testing/selftests/exec/bpf_interp.bpf.c | 61 +
tools/testing/selftests/exec/config | 10 +
tools/testing/selftests/exec/interp_bind.bpf.c | 76 +
tools/testing/selftests/exec/loader.bpf.c | 56 +
tools/testing/selftests/exec/nix_origin.bpf.c | 224 +++
tools/testing/selftests/exec/transparent.bpf.c | 57 +
35 files changed, 4969 insertions(+), 523 deletions(-)
create mode 100644 fs/binfmt_misc_bpf.c
create mode 100644 include/linux/binfmt_misc.h
create mode 100644 tools/testing/selftests/exec/binfmt_bind_interp.c
create mode 100644 tools/testing/selftests/exec/binfmt_bpf_app.c
create mode 100644 tools/testing/selftests/exec/binfmt_bpf_interp.c
create mode 100644 tools/testing/selftests/exec/binfmt_loader_payload.c
create mode 100644 tools/testing/selftests/exec/binfmt_misc_bpf.c
create mode 100644 tools/testing/selftests/exec/binfmt_misc_common.h
create mode 100644 tools/testing/selftests/exec/binfmt_misc_disabled.c
create mode 100644 tools/testing/selftests/exec/binfmt_misc_interplimit.c
create mode 100644 tools/testing/selftests/exec/binfmt_misc_loader.c
create mode 100644 tools/testing/selftests/exec/binfmt_misc_selfpin.c
create mode 100644 tools/testing/selftests/exec/binfmt_misc_transparent.c
create mode 100644 tools/testing/selftests/exec/binfmt_transparent_interp.c
create mode 100644 tools/testing/selftests/exec/bpf_interp.bpf.c
create mode 100644 tools/testing/selftests/exec/interp_bind.bpf.c
create mode 100644 tools/testing/selftests/exec/loader.bpf.c
create mode 100644 tools/testing/selftests/exec/nix_origin.bpf.c
create mode 100644 tools/testing/selftests/exec/transparent.bpf.c
^ permalink raw reply [flat|nested] 38+ messages in thread
* [GIT PULL 04/18 for v7.3] vfs efs
2026-08-14 13:07 [GIT PULL 00/18 for v7.3] v7.3 Christian Brauner
` (2 preceding siblings ...)
2026-08-14 13:11 ` [GIT PULL 03/18 for v7.3] vfs binfmt Christian Brauner
@ 2026-08-14 13:11 ` 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
` (13 subsequent siblings)
17 siblings, 1 reply; 38+ messages in thread
From: Christian Brauner @ 2026-08-14 13:11 UTC (permalink / raw)
To: Linus Torvalds; +Cc: Christian Brauner, linux-fsdevel, linux-kernel
Hey Linus,
/* Summary */
This removes the EFS filesystem, the read-only on-disk format SGI used
on IRIX before XFS.
/* Testing */
No build failures or warnings were observed.
/* Conflicts */
Merge conflicts with mainline
=============================
No known conflicts.
Merge conflicts with other trees
================================
[1]: https://lore.kernel.org/linux-next/akaE4dbtwZthgqJc@sirena.org.uk
This conflicts with the net-next tree in MAINTAINERS between commit
eb56577ae9a5a ("ehea: remove the ehea driver") from the net-next tree and
commit 969076f31bf63 ("efs: Remove EFS") from this tree. Both commits
delete adjacent MAINTAINERS entries, so the conflict resolves by removing
both the EHEA and the EFS FILESYSTEM blocks.
The following changes since commit dc59e4fea9d83f03bad6bddf3fa2e52491777482:
Linux 7.2-rc1 (2026-06-28 12:01:31 -0700)
are available in the Git repository at:
git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/vfs-7.3-rc1.efs
for you to fetch changes up to bf2fbbca5d49d07917236604837145ee9e662c41:
Merge patch "efs: Remove EFS" (2026-06-29 10:28:52 +0200)
----------------------------------------------------------------
vfs-7.3-rc1.efs
Please consider pulling these changes from the signed vfs-7.3-rc1.efs tag.
Thanks!
Christian
----------------------------------------------------------------
Christian Brauner (1):
Merge patch "efs: Remove EFS"
Matthew Wilcox (Oracle) (1):
efs: Remove EFS
MAINTAINERS | 5 -
fs/Kconfig | 1 -
fs/Makefile | 1 -
fs/efs/Kconfig | 16 --
fs/efs/Makefile | 8 -
fs/efs/dir.c | 105 ------------
fs/efs/efs.h | 144 ----------------
fs/efs/file.c | 42 -----
fs/efs/inode.c | 315 -----------------------------------
fs/efs/namei.c | 120 --------------
fs/efs/super.c | 368 -----------------------------------------
fs/efs/symlink.c | 50 ------
include/linux/efs_vh.h | 54 ------
include/uapi/linux/efs_fs_sb.h | 63 -------
14 files changed, 1292 deletions(-)
delete mode 100644 fs/efs/Kconfig
delete mode 100644 fs/efs/Makefile
delete mode 100644 fs/efs/dir.c
delete mode 100644 fs/efs/efs.h
delete mode 100644 fs/efs/file.c
delete mode 100644 fs/efs/inode.c
delete mode 100644 fs/efs/namei.c
delete mode 100644 fs/efs/super.c
delete mode 100644 fs/efs/symlink.c
delete mode 100644 include/linux/efs_vh.h
delete mode 100644 include/uapi/linux/efs_fs_sb.h
^ permalink raw reply [flat|nested] 38+ messages in thread
* [GIT PULL 05/18 for v7.3] vfs failfs
2026-08-14 13:07 [GIT PULL 00/18 for v7.3] v7.3 Christian Brauner
` (3 preceding siblings ...)
2026-08-14 13:11 ` [GIT PULL 04/18 for v7.3] vfs efs Christian Brauner
@ 2026-08-14 13:11 ` 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
` (12 subsequent siblings)
17 siblings, 1 reply; 38+ messages in thread
From: Christian Brauner @ 2026-08-14 13:11 UTC (permalink / raw)
To: Linus Torvalds; +Cc: Christian Brauner, linux-fsdevel, linux-kernel
Hey Linus,
/* Summary */
Add failfs and expose a FD_FAILFS_ROOT sentinenel. 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'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's possible to chroot
into failfs as an unprivileged user provided the task has no new
privileges set.
/* Testing */
No build failures or warnings were observed.
/* Conflicts */
Merge conflicts with mainline
=============================
No known conflicts.
Merge conflicts with other trees
================================
No known conflicts.
The following changes since commit 1590cf0329716306e948a8fc29f1d3ee87d3989f:
Linux 7.2-rc4 (2026-07-19 13:54:41 -0700)
are available in the Git repository at:
git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/vfs-7.3-rc1.failfs
for you to fetch changes up to 1d38e750a389e919c1608dbc61cd5c93cd4915dc:
Merge patch series "fs: add failfs" (2026-07-27 17:18:00 +0200)
----------------------------------------------------------------
vfs-7.3-rc1.failfs
Please consider pulling these changes from the signed vfs-7.3-rc1.failfs tag.
Thanks!
Christian
----------------------------------------------------------------
Christian Brauner (8):
fs: add failfs
fs: support FD_FAILFS_ROOT in fchdir()
fs: add fchroot()
fs: support FD_FAILFS_ROOT in fchroot()
arch: hookup fchroot() system call
selftests/filesystems: add failfs selftests
Documentation: add failfs documentation
Merge patch series "fs: add failfs"
Documentation/filesystems/failfs.rst | 73 +++
Documentation/filesystems/index.rst | 1 +
arch/alpha/kernel/syscalls/syscall.tbl | 1 +
arch/arm/tools/syscall.tbl | 1 +
arch/arm64/tools/syscall_32.tbl | 1 +
arch/m68k/kernel/syscalls/syscall.tbl | 1 +
arch/microblaze/kernel/syscalls/syscall.tbl | 1 +
arch/mips/kernel/syscalls/syscall_n32.tbl | 1 +
arch/mips/kernel/syscalls/syscall_n64.tbl | 1 +
arch/mips/kernel/syscalls/syscall_o32.tbl | 1 +
arch/parisc/kernel/syscalls/syscall.tbl | 1 +
arch/powerpc/kernel/syscalls/syscall.tbl | 1 +
arch/s390/kernel/syscalls/syscall.tbl | 1 +
arch/sh/kernel/syscalls/syscall.tbl | 1 +
arch/sparc/kernel/syscalls/syscall.tbl | 1 +
arch/x86/entry/syscalls/syscall_32.tbl | 1 +
arch/x86/entry/syscalls/syscall_64.tbl | 1 +
arch/xtensa/kernel/syscalls/syscall.tbl | 1 +
fs/Makefile | 2 +-
fs/d_path.c | 3 +-
fs/failfs.c | 166 ++++++
fs/internal.h | 4 +
fs/namespace.c | 1 +
fs/open.c | 51 +-
include/linux/syscalls.h | 1 +
include/uapi/asm-generic/unistd.h | 6 +-
include/uapi/linux/fcntl.h | 1 +
include/uapi/linux/magic.h | 1 +
scripts/syscall.tbl | 1 +
tools/include/uapi/asm-generic/unistd.h | 6 +-
tools/perf/arch/arm/entry/syscalls/syscall.tbl | 1 +
.../perf/arch/mips/entry/syscalls/syscall_n64.tbl | 1 +
tools/perf/arch/powerpc/entry/syscalls/syscall.tbl | 1 +
tools/perf/arch/s390/entry/syscalls/syscall.tbl | 1 +
tools/perf/arch/sh/entry/syscalls/syscall.tbl | 1 +
tools/perf/arch/sparc/entry/syscalls/syscall.tbl | 1 +
tools/perf/arch/x86/entry/syscalls/syscall_32.tbl | 1 +
tools/perf/arch/x86/entry/syscalls/syscall_64.tbl | 1 +
tools/perf/arch/xtensa/entry/syscalls/syscall.tbl | 1 +
tools/scripts/syscall.tbl | 1 +
tools/testing/selftests/Makefile | 1 +
.../selftests/filesystems/failfs/.gitignore | 2 +
.../testing/selftests/filesystems/failfs/Makefile | 5 +
.../selftests/filesystems/failfs/failfs_test.c | 585 +++++++++++++++++++++
44 files changed, 931 insertions(+), 5 deletions(-)
create mode 100644 Documentation/filesystems/failfs.rst
create mode 100644 fs/failfs.c
create mode 100644 tools/testing/selftests/filesystems/failfs/.gitignore
create mode 100644 tools/testing/selftests/filesystems/failfs/Makefile
create mode 100644 tools/testing/selftests/filesystems/failfs/failfs_test.c
^ permalink raw reply [flat|nested] 38+ messages in thread
* [GIT PULL 06/18 for v7.3] vfs fat
2026-08-14 13:07 [GIT PULL 00/18 for v7.3] v7.3 Christian Brauner
` (4 preceding siblings ...)
2026-08-14 13:11 ` [GIT PULL 05/18 for v7.3] vfs failfs Christian Brauner
@ 2026-08-14 13:12 ` 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
` (11 subsequent siblings)
17 siblings, 1 reply; 38+ messages in thread
From: Christian Brauner @ 2026-08-14 13:12 UTC (permalink / raw)
To: Linus Torvalds; +Cc: Christian Brauner, linux-fsdevel, linux-kernel
Hey Linus,
/* Summary */
This rejects names longer than NAME_MAX in msdos_format_name(). The VFS
only enforces PATH_MAX rather than the length of an individual
component. open() on such a path component reported success for a name
far longer than NAME_MAX.
/* Testing */
No build failures or warnings were observed.
/* Conflicts */
Merge conflicts with mainline
=============================
No known conflicts.
Merge conflicts with other trees
================================
No known conflicts.
The following changes since commit dc59e4fea9d83f03bad6bddf3fa2e52491777482:
Linux 7.2-rc1 (2026-06-28 12:01:31 -0700)
are available in the Git repository at:
git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/vfs-7.3-rc1.fat
for you to fetch changes up to 9d7ed813ee5ff0d469bd99630828ed6fdef4e8da:
fat: reject name longer than NAME_MAX in msdos_format_name() (2026-06-30 13:01:05 +0200)
----------------------------------------------------------------
vfs-7.3-rc1.fat
Please consider pulling these changes from the signed vfs-7.3-rc1.fat tag.
Thanks!
Christian
----------------------------------------------------------------
Zizhi Wo (1):
fat: reject name longer than NAME_MAX in msdos_format_name()
fs/fat/namei_msdos.c | 3 +++
1 file changed, 3 insertions(+)
^ permalink raw reply [flat|nested] 38+ messages in thread
* [GIT PULL 07/18 for v7.3] vfs freevxfs
2026-08-14 13:07 [GIT PULL 00/18 for v7.3] v7.3 Christian Brauner
` (5 preceding siblings ...)
2026-08-14 13:12 ` [GIT PULL 06/18 for v7.3] vfs fat Christian Brauner
@ 2026-08-14 13:12 ` 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
` (10 subsequent siblings)
17 siblings, 1 reply; 38+ messages in thread
From: Christian Brauner @ 2026-08-14 13:12 UTC (permalink / raw)
To: Linus Torvalds; +Cc: Christian Brauner, linux-fsdevel, linux-kernel
Hey Linus,
/* Summary */
This removes the freevxfs driver. Providing compatibility with
various old-school Unix systems from the 1990s was fun 25 years ago.
Today it mostly serves as fodder for automated bug checkers. There has
been only one known user and contributor in the last 15 years.
/* Testing */
No build failures or warnings were observed.
/* Conflicts */
Merge conflicts with mainline
=============================
No known conflicts.
Merge conflicts with other trees
================================
No known conflicts.
The following changes since commit 1590cf0329716306e948a8fc29f1d3ee87d3989f:
Linux 7.2-rc4 (2026-07-19 13:54:41 -0700)
are available in the Git repository at:
git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/vfs-7.3-rc1.freevxfs
for you to fetch changes up to a3ed4fcd04b95347ad04cf4409b394bb7fbd0c02:
freevxfs: remove the driver (2026-07-31 15:23:44 +0200)
----------------------------------------------------------------
vfs-7.3-rc1.freevxfs
Please consider pulling these changes from the signed vfs-7.3-rc1.freevxfs tag.
Thanks!
Christian
----------------------------------------------------------------
Christoph Hellwig (1):
freevxfs: remove the driver
MAINTAINERS | 6 -
fs/Kconfig | 1 -
fs/Makefile | 1 -
fs/freevxfs/Kconfig | 27 ----
fs/freevxfs/Makefile | 9 --
fs/freevxfs/vxfs.h | 257 ----------------------------------
fs/freevxfs/vxfs_bmap.c | 272 ------------------------------------
fs/freevxfs/vxfs_dir.h | 68 ---------
fs/freevxfs/vxfs_extern.h | 49 -------
fs/freevxfs/vxfs_fshead.c | 166 ----------------------
fs/freevxfs/vxfs_fshead.h | 43 ------
fs/freevxfs/vxfs_immed.c | 53 -------
fs/freevxfs/vxfs_inode.c | 314 -----------------------------------------
fs/freevxfs/vxfs_inode.h | 169 ----------------------
fs/freevxfs/vxfs_lookup.c | 273 ------------------------------------
fs/freevxfs/vxfs_olt.c | 105 --------------
fs/freevxfs/vxfs_olt.h | 120 ----------------
fs/freevxfs/vxfs_subr.c | 152 --------------------
fs/freevxfs/vxfs_super.c | 347 ----------------------------------------------
19 files changed, 2432 deletions(-)
delete mode 100644 fs/freevxfs/Kconfig
delete mode 100644 fs/freevxfs/Makefile
delete mode 100644 fs/freevxfs/vxfs.h
delete mode 100644 fs/freevxfs/vxfs_bmap.c
delete mode 100644 fs/freevxfs/vxfs_dir.h
delete mode 100644 fs/freevxfs/vxfs_extern.h
delete mode 100644 fs/freevxfs/vxfs_fshead.c
delete mode 100644 fs/freevxfs/vxfs_fshead.h
delete mode 100644 fs/freevxfs/vxfs_immed.c
delete mode 100644 fs/freevxfs/vxfs_inode.c
delete mode 100644 fs/freevxfs/vxfs_inode.h
delete mode 100644 fs/freevxfs/vxfs_lookup.c
delete mode 100644 fs/freevxfs/vxfs_olt.c
delete mode 100644 fs/freevxfs/vxfs_olt.h
delete mode 100644 fs/freevxfs/vxfs_subr.c
delete mode 100644 fs/freevxfs/vxfs_super.c
^ permalink raw reply [flat|nested] 38+ messages in thread
* [GIT PULL 08/18 for v7.3] vfs iomap
2026-08-14 13:07 [GIT PULL 00/18 for v7.3] v7.3 Christian Brauner
` (6 preceding siblings ...)
2026-08-14 13:12 ` [GIT PULL 07/18 for v7.3] vfs freevxfs Christian Brauner
@ 2026-08-14 13:12 ` 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
` (9 subsequent siblings)
17 siblings, 1 reply; 38+ messages in thread
From: Christian Brauner @ 2026-08-14 13:12 UTC (permalink / raw)
To: Linus Torvalds; +Cc: Christian Brauner, linux-fsdevel, linux-kernel
Hey Linus,
/* Summary */
The bulk of this is the conversion of iomap to a single ->iomap_next()
callback and thus finishing the move to an iterator model.
Every iomap operation drove its iteration through a struct iomap_ops
holding ->iomap_begin() and ->iomap_end(). iomap_iter() only ever sees
those as pointers. That means every step of every iteration is an
indirect call.
This 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.
This also allows future callers to express custom logic to drive the
iteration forward better. xfs, btrfs, ext4, ext2, erofs, f2fs, gfs2,
hpfs, fuse, exfat, zonefs, ntfs, ntfs3 and the block device
mapping are all converted. No functional changes are intended.
This also adds a simple direct I/O path for small reads. On Gen5 NVMe
the __iomap_dio_rw() dominates 4K random reads. The same single-core
io_uring poll mode workload reaches ~3.2M IOPS against the raw block
device but only ~1.92M through ext4 or XFS.
__iomap_dio_rw(), iomap_iter(), iomap_dio_bio_iter() and kfree() were at
the top of the profile. The new path is very lightweight if no special
behavior is requested. The bio comes from a dedicated bioset and laid
out so the whole request is a single cacheline aligned allocation.
Completion runs inline.
That takes ext4 from 1.92M to 2.19M IOPS in the original workload. fio
shows around:
* 4% at libaio queue depths of 64 and up
* around 5% for io_uring
* up to 10% for io_uring poll mode at depth 256
on both ext4 and xfs.
A few other patches:
- iomap_folio_mark_uptodate() lets a filesystem that writes
into the page cache outside the iomap read and write paths keep
iomap's internal uptodate bitmap in sync, which fuse needs for
server-pushed notify stores before it can enable large folios;
- two fixes for iomap_bio_read_folio_range_sync(): a potential crash
when device integrity behavior is changed and a missing bio_uninit().
- a folio batch release fix on iomap callback failures
- FGP_NOFS is dropped from iomap_get_folio()
- documentation fix
/* Testing */
No build failures or warnings were observed.
/* Conflicts */
Merge conflicts with mainline
=============================
No known conflicts.
Merge conflicts with other trees
================================
[1]: https://lore.kernel.org/linux-next/anMt1DKhBq-9Hk7h@sirena.org.uk
https://lore.kernel.org/linux-next/CAJnrk1ZqzifYSFNg1tBNz15p2WBe+rMVfRT5yq=B+wCemLt+4g@mail.gmail.com
This conflicts with the ntfs tree in fs/ntfs/iomap.c between commit
9cf6ac617e8e9 ("ntfs: serialize resident iomap reads with mrec_lock") from
the ntfs tree and commit 7a7bf7551624f ("ntfs: convert iomap ops to
->iomap_next()") from this tree:
diff --cc fs/ntfs/iomap.c
index 73c50171285aa,d0964ac840d9f..0000000000000
--- a/fs/ntfs/iomap.c
+++ b/fs/ntfs/iomap.c
@@@ -283,22 -274,13 +283,24 @@@ static int ntfs_read_iomap_begin(struc
unsigned int flags, struct iomap *iomap, struct iomap *srcmap)
{
return __ntfs_read_iomap_begin(inode, offset, length, flags, iomap,
- srcmap, true);
+ srcmap, true, true);
}
-static DEFINE_IOMAP_ITER_NEXT(ntfs_read_iomap_next, ntfs_read_iomap_begin);
+static int ntfs_read_iomap_end(struct inode *inode, loff_t pos, loff_t length,
+ ssize_t written, unsigned int flags, struct iomap *iomap)
+{
+ struct ntfs_inode *base_ni = iomap->private;
+
+ if (base_ni)
+ mutex_unlock(&base_ni->mrec_lock);
+ return written;
+}
+
++static DEFINE_IOMAP_ITER_NEXT_END(ntfs_read_iomap_next, ntfs_read_iomap_begin,
++ ntfs_read_iomap_end);
+
const struct iomap_ops ntfs_read_iomap_ops = {
- .iomap_begin = ntfs_read_iomap_begin,
- .iomap_end = ntfs_read_iomap_end,
+ .iomap_next = ntfs_read_iomap_next,
};
/*
The following changes since commit dc59e4fea9d83f03bad6bddf3fa2e52491777482:
Linux 7.2-rc1 (2026-06-28 12:01:31 -0700)
are available in the Git repository at:
git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/vfs-7.3-rc1.iomap
for you to fetch changes up to 9948bc9aa1c2e5e77ab989a8e5d5eec829e967d5:
Merge patch series "fixes for iomap_bio_read_folio_range_sync" (2026-08-12 09:22:40 +0200)
----------------------------------------------------------------
vfs-7.3-rc1.iomap
Please consider pulling these changes from the signed vfs-7.3-rc1.iomap tag.
Thanks!
Christian
----------------------------------------------------------------
Benjamin Wu (1):
docs: fix grammatical error in iomap docs
Brian Foster (1):
iomap: release the folio batch on iomap callback failures
Christian Brauner (4):
Merge patch series "iomap: add simple dio path for small direct I/O"
Merge patch series "iomap/fuse: add helper to keep uptodate bitmap in sync"
Merge patch series "iomap: convert to in-iter iomap_next() model"
Merge patch series "fixes for iomap_bio_read_folio_range_sync"
Christoph Hellwig (4):
iomap: decouple simple direct I/O reads from iomap_dio_rw
iomap: use GFP_NOWAIT when application for iomap_dio_simple allocations
iomap: don't free integrity payload that doesn't exist
iomap: iomap_bio_read_folio_range_sync is missing a call to bio_uninit
Fengnan Chang (3):
iomap: factor out iomap_dio_alignment helper
iomap: pass error code to should_report_dio_fserror directly
iomap: add simple dio path for small direct I/O
Joanne Koong (19):
fuse: don't clear folio uptodate on writethrough errors
iomap: add helper to mark folio uptodate
fuse: use iomap helper to mark folio uptodate
iomap: split iomap_iter() logic into iomap_iter_next()
iomap: add ->iomap_next()
xfs: convert iomap ops to ->iomap_next()
btrfs: convert iomap ops to ->iomap_next()
ntfs3: convert iomap ops to ->iomap_next()
ntfs: convert iomap ops to ->iomap_next()
ext4: convert iomap ops to ->iomap_next()
erofs: convert iomap ops to ->iomap_next()
zonefs: convert iomap ops to ->iomap_next()
ext2: convert iomap ops to ->iomap_next()
block: convert iomap ops to ->iomap_next()
f2fs: convert iomap ops to ->iomap_next()
gfs2: convert iomap ops to ->iomap_next()
hpfs: convert iomap ops to ->iomap_next()
fuse: convert iomap ops to ->iomap_next()
exfat: convert iomap ops to ->iomap_next()
Matthew Wilcox (Oracle) (1):
iomap: Remove FGP_NOFS from iomap_get_folio()
Documentation/filesystems/iomap/design.rst | 2 +-
block/fops.c | 4 +-
fs/btrfs/direct-io.c | 6 +-
fs/erofs/data.c | 6 +-
fs/erofs/zmap.c | 5 +-
fs/exfat/iomap.c | 10 +-
fs/ext2/inode.c | 6 +-
fs/ext4/ext4.h | 3 +
fs/ext4/extents.c | 4 +-
fs/ext4/file.c | 4 +-
fs/ext4/inode.c | 10 +-
fs/f2fs/data.c | 4 +-
fs/fuse/dax.c | 6 +-
fs/fuse/file.c | 24 +---
fs/fuse/notify.c | 4 +-
fs/fuse/virtio_fs.c | 3 +-
fs/gfs2/bmap.c | 6 +-
fs/hpfs/file.c | 4 +-
fs/iomap/bio.c | 3 +-
fs/iomap/buffered-io.c | 8 +-
fs/iomap/direct-io.c | 190 +++++++++++++++++++++++++++--
fs/iomap/iter.c | 128 ++++++++++---------
fs/ntfs/iomap.c | 32 +++--
fs/ntfs3/inode.c | 6 +-
fs/xfs/xfs_file.c | 18 +--
fs/xfs/xfs_iomap.c | 41 +++++--
fs/xfs/xfs_iomap.h | 4 +
fs/zonefs/file.c | 9 +-
include/linux/iomap.h | 178 ++++++++++++++++++++++++---
29 files changed, 569 insertions(+), 159 deletions(-)
^ permalink raw reply [flat|nested] 38+ messages in thread
* [GIT PULL 09/18 for v7.3] vfs kfunc
2026-08-14 13:07 [GIT PULL 00/18 for v7.3] v7.3 Christian Brauner
` (7 preceding siblings ...)
2026-08-14 13:12 ` [GIT PULL 08/18 for v7.3] vfs iomap Christian Brauner
@ 2026-08-14 13:12 ` 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
` (8 subsequent siblings)
17 siblings, 1 reply; 38+ messages in thread
From: Christian Brauner @ 2026-08-14 13:12 UTC (permalink / raw)
To: Linus Torvalds; +Cc: Christian Brauner, linux-fsdevel, linux-kernel
Hey Linus,
/* Summary */
This adds a bpf_sock_read_xattr() kfunc so a BPF LSM program can read
a user.* extended attribute from a socket's sockfs inode locklessly.
userspace already uses user.* xattrs on sockets to implement socket rate
limiting and to tag sockets for other purposes such as a varlink
registry. There has been no efficient way for a BPF program to read
those labels back. With this a listening socket marked from userspace
with fsetxattr() can be read back during bind or connect and acted upon
on the connecting socket. That lets userspace mark sockets and later
rediscover them or implement policy on them.
/* Testing */
No build failures or warnings were observed.
/* Conflicts */
Merge conflicts with mainline
=============================
This conflicts with commit 3f8c65b06fafc ("bpf: have
bpf_real_data_inode() take a struct file") in fs/bpf_fs_kfuncs.c. That
commit renamed bpf_real_inode() to bpf_real_data_inode() and switched it
to take a struct file, while commit b4e124d168552 ("fs: Add
bpf_sock_read_xattr() kfunc to read socket xattrs") from this tree adds
a new kfunc immediately above it. Here's a proposed conflict resolution:
[1]: https://lore.kernel.org/linux-next/ak4zoqJsFCyOQXyh@sirena.org.uk
diff --cc fs/bpf_fs_kfuncs.c
index 5b7d03e4fc6d,9a4ea5c9b0c9..6cb877267978
--- a/fs/bpf_fs_kfuncs.c
+++ b/fs/bpf_fs_kfuncs.c
@@@ -360,24 -360,52 +361,57 @@@ __bpf_kfunc int bpf_cgroup_read_xattr(s
}
#endif /* CONFIG_CGROUPS */
+ #ifdef CONFIG_NET
+ /**
+ * bpf_sock_read_xattr - read xattr of a socket's inode in sockfs
+ * @sock: socket to get xattr from
+ * @name__str: name of the xattr
+ * @value_p: output buffer of the xattr value
+ *
+ * Get xattr *name__str* of *sock* and store the output in *value_p*.
+ *
+ * For security reasons, only *name__str* with prefix "user." is allowed.
+ *
+ * Return: length of the xattr value on success, a negative value on error.
+ */
+ __bpf_kfunc int bpf_sock_read_xattr(struct socket *sock, const char *name__str,
+ struct bpf_dynptr *value_p)
+ {
+ struct bpf_dynptr_kern *value_ptr = (struct bpf_dynptr_kern *)value_p;
+ u32 value_len;
+ void *value;
+
+ /* Only allow reading "user.*" xattrs */
+ if (strncmp(name__str, XATTR_USER_PREFIX, XATTR_USER_PREFIX_LEN))
+ return -EPERM;
+
+ value_len = __bpf_dynptr_size(value_ptr);
+ value = __bpf_dynptr_data_rw(value_ptr, value_len);
+ if (!value)
+ return -EINVAL;
+
+ return sock_read_xattr(sock, name__str, value, value_len);
+ }
+ #endif /* CONFIG_NET */
+
/**
- * bpf_real_inode - get the real inode backing a dentry
- * @dentry: dentry to resolve
+ * bpf_real_data_inode - get the real inode hosting a file's data
+ * @file: file to resolve
*
- * If the dentry is on a union/overlay filesystem, return the underlying, real
- * inode that hosts the data. Otherwise return the inode attached to the
- * dentry itself.
+ * Resolve @file to the inode that hosts its data. For a regular file on a
+ * union/overlay filesystem this is the underlying (upper or lower) inode that
+ * stores the data, not the overlay inode.
*
- * Return: The real inode backing the dentry, or NULL for a negative dentry.
+ * Data resolution only applies to regular files. For a non-regular file (e.g.
+ * a device node, fifo or socket) on a union/overlay filesystem the overlay
+ * inode itself is returned; for any file on a non-union filesystem the inode
+ * attached to @file is returned.
+ *
+ * Return: The inode hosting @file's data, or NULL.
*/
-__bpf_kfunc struct inode *bpf_real_inode(struct dentry *dentry)
+__bpf_kfunc struct inode *bpf_real_data_inode(struct file *file)
{
- return d_real_inode(dentry);
+ return d_real_inode(file_dentry(file));
}
__bpf_kfunc_end_defs();
@@@ -390,28 -418,16 +424,31 @@@ BTF_ID_FLAGS(func, bpf_get_dentry_xattr
BTF_ID_FLAGS(func, bpf_get_file_xattr, KF_SLEEPABLE)
BTF_ID_FLAGS(func, bpf_set_dentry_xattr, KF_SLEEPABLE)
BTF_ID_FLAGS(func, bpf_remove_dentry_xattr, KF_SLEEPABLE)
-BTF_ID_FLAGS(func, bpf_real_inode, KF_SLEEPABLE | KF_RET_NULL)
+BTF_ID_FLAGS(func, bpf_real_data_inode, KF_SLEEPABLE | KF_RET_NULL)
+ #ifdef CONFIG_NET
+ BTF_ID_FLAGS(func, bpf_sock_read_xattr, KF_RCU)
+ #endif
BTF_KFUNCS_END(bpf_fs_kfunc_set_ids)
+/* Side-effecting kfuncs that stay exclusive to LSM programs. */
+BTF_SET_START(bpf_fs_kfunc_lsm_only_ids)
+BTF_ID(func, bpf_set_dentry_xattr)
+BTF_ID(func, bpf_remove_dentry_xattr)
+BTF_SET_END(bpf_fs_kfunc_lsm_only_ids)
+
static int bpf_fs_kfuncs_filter(const struct bpf_prog *prog, u32 kfunc_id)
{
- if (!btf_id_set8_contains(&bpf_fs_kfunc_set_ids, kfunc_id) ||
- prog->type == BPF_PROG_TYPE_LSM)
+ if (!btf_id_set8_contains(&bpf_fs_kfunc_set_ids, kfunc_id))
+ return 0;
+ if (prog->type == BPF_PROG_TYPE_LSM)
+ return 0;
+ if (prog->type != BPF_PROG_TYPE_STRUCT_OPS)
+ return -EACCES;
+ /* ->st_ops is unset during the cfg pass; enforced once it is set. */
+ if (!prog->aux->st_ops)
+ return 0;
+ if (bpf_prog_is_binfmt_misc_ops(prog) &&
+ !btf_id_set_contains(&bpf_fs_kfunc_lsm_only_ids, kfunc_id))
return 0;
return -EACCES;
}
Merge conflicts with other trees
================================
No known conflicts.
The following changes since commit dc59e4fea9d83f03bad6bddf3fa2e52491777482:
Linux 7.2-rc1 (2026-06-28 12:01:31 -0700)
are available in the Git repository at:
git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/vfs-7.3-rc1.kfunc
for you to fetch changes up to 8abc1c8badc11c859bb4ba43211611347e59c55c:
Merge patch series "Add bpf_sock_read_xattr() kfunc to read socket xattrs" (2026-06-29 10:31:17 +0200)
----------------------------------------------------------------
vfs-7.3-rc1.kfunc
Please consider pulling these changes from the signed vfs-7.3-rc1.kfunc tag.
Thanks!
Christian
----------------------------------------------------------------
Christian Brauner (3):
fs: Add bpf_sock_read_xattr() kfunc to read socket xattrs
selftests/bpf: Add test for bpf_sock_read_xattr() kfunc
Merge patch series "Add bpf_sock_read_xattr() kfunc to read socket xattrs"
fs/bpf_fs_kfuncs.c | 37 ++++++++++++
include/linux/net.h | 1 +
net/socket.c | 25 ++++++++
tools/testing/selftests/bpf/bpf_experimental.h | 3 +
.../testing/selftests/bpf/prog_tests/sock_xattr.c | 67 ++++++++++++++++++++++
.../testing/selftests/bpf/progs/sock_read_xattr.c | 54 +++++++++++++++++
6 files changed, 187 insertions(+)
create mode 100644 tools/testing/selftests/bpf/prog_tests/sock_xattr.c
create mode 100644 tools/testing/selftests/bpf/progs/sock_read_xattr.c
^ permalink raw reply [flat|nested] 38+ messages in thread
* [GIT PULL 10/18 for v7.3] vfs kthread
2026-08-14 13:07 [GIT PULL 00/18 for v7.3] v7.3 Christian Brauner
` (8 preceding siblings ...)
2026-08-14 13:12 ` [GIT PULL 09/18 for v7.3] vfs kfunc Christian Brauner
@ 2026-08-14 13:12 ` 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
` (7 subsequent siblings)
17 siblings, 1 reply; 38+ messages in thread
From: Christian Brauner @ 2026-08-14 13:12 UTC (permalink / raw)
To: Linus Torvalds; +Cc: Christian Brauner, linux-fsdevel, linux-kernel
Hey Linus,
/* Summary */
This stops kernel threads from sharing filesystem state with userspace.
This work is about 3 cycles old and has been in -next for about that
time.
When the kernel boots init_task creates PID 1 and then kthreadd. From
that point every kthread and PID 1 share the same fs_struct. That is why
pivot_root() has to rewrite the fs_struct of all kthreads. The rewriting
exists so that kthreads can use init's filesystem state when they want
to. It also means userspace can move the ground out from under the
kernel.
PID 1 now gets a completely separate fs_struct. All kthreads are
anchored in a private SB_KERNMOUNT instance of nullfs that cannot be
mounted on and cannot be used to follow other mounts. Userspace init
can no longer affect kthread filesystem state and kthreads can no
longer affect userspace fs state without explicit opting in to that.
Path lookup from a kthread now fails by default. It makes it
deliberately hard to offload security sensitive operations into init's
filesystem state from a kthread.
Places that legitimately need to look something up there opt in through
the new scoped_with_init_fs() which temporarily overrides the caller's
fs_struct with init's. usermodehelpers remain the only kernel tasks that
genuinely share init's filesystem state, since they execute random
binaries in the root filesystem (excellent...).
The visible result is that /proc/2/root is a nullfs with an empty
mountinfo while /proc/1/root is the real root.
/* Testing */
No build failures or warnings were observed.
/* Conflicts */
Merge conflicts with mainline
=============================
No known conflicts.
Merge conflicts with other trees
================================
No known conflicts.
The following changes since commit dc59e4fea9d83f03bad6bddf3fa2e52491777482:
Linux 7.2-rc1 (2026-06-28 12:01:31 -0700)
are available in the Git repository at:
git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/vfs-7.3-rc1.kthread
for you to fetch changes up to b4343aebd3a4dd255b15b2e5b1363d6399da302f:
initramfs_test: use test init/exit hooks to override init fs (2026-07-31 12:56:51 +0200)
----------------------------------------------------------------
vfs-7.3-rc1.kthread
Please consider pulling these changes from the signed vfs-7.3-rc1.kthread tag.
Thanks!
Christian
----------------------------------------------------------------
Christian Brauner (27):
fs: add switch_fs_struct()
fs: notice when init abandons fs sharing
fs: add scoped_with_init_fs()
fs: add real_fs to track task's actual fs_struct
fs: make userspace_init_fs a dynamically-initialized pointer
rnbd: use scoped_with_init_fs() for block device open
crypto: ccp: use scoped_with_init_fs() for SEV file access
scsi: target: use scoped_with_init_fs() for ALUA metadata
scsi: target: use scoped_with_init_fs() for APTPL metadata
btrfs: use scoped_with_init_fs() for update_dev_time()
coredump: use scoped_with_init_fs() for coredump path resolution
fs: use scoped_with_init_fs() for kernel_read_file_from_path_initns()
ksmbd: use scoped_with_init_fs() for share path resolution
ksmbd: use scoped_with_init_fs() for filesystem info path lookup
ksmbd: use scoped_with_init_fs() for VFS path operations
pnfs/blocklayout: use scoped_with_init_fs() for SCSI device lookup
initramfs: use scoped_with_init_fs() for rootfs unpacking
af_unix: use scoped_with_init_fs() for coredump socket lookup
fs: stop sharing fs_struct between init_task and pid 1
fs: add umh argument to struct kernel_clone_args
devtmpfs: create private mount namespace
nullfs: make nullfs multi-instance
fs: start all kthreads in nullfs
fs: stop rewriting kthread fs structs
fs: stop rewriting paths for PF_EXITING | PF_DUMPCORE
Merge patch series "fs,kthread: start all kthreads in nullfs"
initramfs_test: use test init/exit hooks to override init fs
drivers/base/devtmpfs.c | 2 +-
drivers/block/rnbd/rnbd-srv.c | 4 +-
drivers/char/misc_minor_kunit.c | 25 +++++----
drivers/crypto/ccp/sev-dev.c | 12 ++---
drivers/target/target_core_alua.c | 11 +++-
drivers/target/target_core_pr.c | 4 +-
fs/btrfs/volumes.c | 11 +++-
fs/coredump.c | 11 ++--
fs/fs_struct.c | 103 ++++++++++++++++++++++++++++++++++++--
fs/kernel_read_file.c | 9 +---
fs/namespace.c | 16 +++---
fs/nfs/blocklayout/dev.c | 15 ++++--
fs/nullfs.c | 12 ++---
fs/proc/array.c | 4 +-
fs/proc/base.c | 8 +--
fs/proc_namespace.c | 4 +-
fs/smb/server/mgmt/share_config.c | 4 +-
fs/smb/server/smb2pdu.c | 4 +-
fs/smb/server/vfs.c | 9 ++--
include/linux/fs_struct.h | 34 +++++++++++++
include/linux/init_task.h | 1 +
include/linux/sched.h | 1 +
include/linux/sched/task.h | 1 +
init/init_task.c | 1 +
init/initramfs.c | 14 ++++--
init/initramfs_test.c | 19 ++++++-
init/main.c | 10 +++-
kernel/fork.c | 53 ++++++++++++--------
kernel/kcmp.c | 2 +-
kernel/umh.c | 6 +--
net/unix/af_unix.c | 17 +++----
31 files changed, 311 insertions(+), 116 deletions(-)
^ permalink raw reply [flat|nested] 38+ messages in thread
* [GIT PULL 11/18 for v7.3] vfs lookup
2026-08-14 13:07 [GIT PULL 00/18 for v7.3] v7.3 Christian Brauner
` (9 preceding siblings ...)
2026-08-14 13:12 ` [GIT PULL 10/18 for v7.3] vfs kthread Christian Brauner
@ 2026-08-14 13:13 ` 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
` (6 subsequent siblings)
17 siblings, 1 reply; 38+ messages in thread
From: Christian Brauner @ 2026-08-14 13:13 UTC (permalink / raw)
To: Linus Torvalds; +Cc: Christian Brauner, linux-fsdevel, linux-kernel
Hey Linus,
/* Summary */
This refactors lookup_open() and adds vfs_lookup_open() for nfsd.
mnt_want_write() and parent locking are moved into lookup_open()
itself.
audit_inode_child() is also now called in lookup_open() on failure. That
is the calling convention in vfs_create() and vfs_mkdir(), but
lookup_open() made no such call when atomic_open() should have created a
file and did not. And neither did the regular ->create() path fwiw.
This also contains work to remove the unneded excl argument from the
->create() inode op.
/* Testing */
No build failures or warnings were observed.
/* Conflicts */
Merge conflicts with mainline
=============================
No known conflicts.
Merge conflicts with other trees
================================
No known conflicts.
The following changes since commit dc59e4fea9d83f03bad6bddf3fa2e52491777482:
Linux 7.2-rc1 (2026-06-28 12:01:31 -0700)
are available in the Git repository at:
git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/vfs-7.3-rc1.lookup
for you to fetch changes up to 895741772f6ca989da565bcbe4673f12d3d0ac31:
Merge patch series "fs/namei.c: comment and coding style fixups" (2026-07-31 10:37:40 +0200)
----------------------------------------------------------------
vfs-7.3-rc1.lookup
Please consider pulling these changes from the signed vfs-7.3-rc1.lookup tag.
Thanks!
Christian
----------------------------------------------------------------
Christian Brauner (6):
Merge patch series "VFS: refactor lookup_open and add vfs_lookup()"
Merge patch series "vfs: call audit_inode_child() in lookup_open() on failure"
fs/namei.c: update stale comments in lookup_open()
fs/namei.c: fix kerneldoc of atomic_open() and vfs_lookup_open()
fs/namei.c: fix coding style in atomic_open() and lookup_open()
Merge patch series "fs/namei.c: comment and coding style fixups"
Jori Koolstra (3):
vfs: move create error && negative dentry case in lookup_open() up
vfs: call audit_inode_child() in lookup_open() on failure
fs/namei.c: update kerneldoc of atomic_open()
NeilBrown (4):
VFS: move mnt_want_write() and locking into lookup_open()
VFS: move delegated_inode retry loop into lookup_open()
VFS: add vfs_lookup_open() for nfsd
Remove excl arg to ->create inode_operation
Documentation/filesystems/locking.rst | 2 +-
Documentation/filesystems/porting.rst | 8 +
Documentation/filesystems/vfs.rst | 2 +-
fs/9p/vfs_inode.c | 3 +-
fs/9p/vfs_inode_dotl.c | 3 +-
fs/affs/affs.h | 2 +-
fs/affs/namei.c | 2 +-
fs/afs/dir.c | 4 +-
fs/bad_inode.c | 2 +-
fs/bfs/dir.c | 2 +-
fs/btrfs/inode.c | 2 +-
fs/ceph/dir.c | 2 +-
fs/coda/dir.c | 2 +-
fs/ecryptfs/inode.c | 2 +-
fs/efivarfs/inode.c | 2 +-
fs/exfat/namei.c | 2 +-
fs/ext2/namei.c | 2 +-
fs/ext4/namei.c | 2 +-
fs/f2fs/namei.c | 2 +-
fs/fat/namei_msdos.c | 2 +-
fs/fat/namei_vfat.c | 2 +-
fs/fuse/dir.c | 2 +-
fs/gfs2/inode.c | 5 +-
fs/hfs/dir.c | 2 +-
fs/hfsplus/dir.c | 2 +-
fs/hostfs/hostfs_kern.c | 2 +-
fs/hpfs/namei.c | 2 +-
fs/hugetlbfs/inode.c | 2 +-
fs/jffs2/dir.c | 4 +-
fs/jfs/namei.c | 2 +-
fs/minix/namei.c | 2 +-
fs/namei.c | 351 ++++++++++++++++++++++++----------
fs/nfs/dir.c | 4 +-
fs/nfs/internal.h | 2 +-
fs/nilfs2/namei.c | 2 +-
fs/ntfs/namei.c | 2 +-
fs/ntfs3/namei.c | 2 +-
fs/ocfs2/dlmfs/dlmfs.c | 3 +-
fs/ocfs2/namei.c | 3 +-
fs/omfs/dir.c | 2 +-
fs/orangefs/namei.c | 3 +-
fs/overlayfs/dir.c | 2 +-
fs/ramfs/inode.c | 2 +-
fs/smb/client/cifsfs.h | 2 +-
fs/smb/client/dir.c | 2 +-
fs/ubifs/dir.c | 2 +-
fs/udf/namei.c | 2 +-
fs/ufs/namei.c | 3 +-
fs/vboxsf/dir.c | 4 +-
fs/xfs/xfs_iops.c | 5 +-
include/linux/fs.h | 2 +-
include/linux/namei.h | 3 +
ipc/mqueue.c | 2 +-
mm/shmem.c | 2 +-
54 files changed, 313 insertions(+), 171 deletions(-)
^ permalink raw reply [flat|nested] 38+ messages in thread
* [GIT PULL 12/18 for v7.3] vfs misc
2026-08-14 13:07 [GIT PULL 00/18 for v7.3] v7.3 Christian Brauner
` (10 preceding siblings ...)
2026-08-14 13:13 ` [GIT PULL 11/18 for v7.3] vfs lookup Christian Brauner
@ 2026-08-14 13:13 ` 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
` (5 subsequent siblings)
17 siblings, 1 reply; 38+ messages in thread
From: Christian Brauner @ 2026-08-14 13:13 UTC (permalink / raw)
To: Linus Torvalds; +Cc: Christian Brauner, linux-fsdevel, linux-kernel
Hey Linus,
/* Summary */
- The lockref dead-count handling is tidied up. The open-coded check for
a count below zero as the dead marker relies on information the caller should
not have.
- make put_mnt_ns() leave mounts connected. Destroying a mount namespace
disconnected its mounts from their mount points. So a file descriptor still
open on the parent of a mount point could be used to peek under it.
Locked mounts were already kept connected to prevent exactly that. But a
mount is only locked when its tree is copied across a user namespace
boundary. So a mount namespace set up by a privileged component had no locked
mounts and its mounts were disconnected. Passing UMOUNT_CONNECTED keeps every
mount connected and prevents that bug.
- vfs_prepare_mode() passes S_IFDIR for directories. I meant to fix that ago
but didn't get to it. So now someone finally did it. That kills the exception
where the could be 0 when a directory was created whereas every other
creation operation passed it explicitly already.
- move long delayed work for ufs, jffs2, hfsplus, hfs and affs from the
per-cpu system_long_wq to the new unbound system_dfl_long_wq. None of that
work relies on per-cpu state and the work item is enqueued with
queue_delayed_work() whose timer is global anyway. So it may as well benefit
from scheduler task placement.
/* Smaller fixes and cleanups */
- unlock_buffer() and journal_end_buffer_io_sync() use clear_and_wake_up_bit()
- the pipe page pools are unified into a single per-pipe pool and the extra
wake_up(rd_wait) is limited to EPOLLET consumers
- eventpoll now computes its timer slack lazily in ep_poll()
- shrink_dcache_for_umount() keeps making progress on busy roots
- excess xarray nodes are freed in clear_inode()
- romfs detects hard link cycles
- the user path of nested backing files is fixed
- pidfd holds exec_update_lock around the namespace ioctl
- non-memcg-aware nr_cached_objects is skipped during memcg slab shrink
- iomap_write_iter() always returns status
- mangle_path() is renamed to seq_mangle_path()
- inode timestamp accessors are annotated
- new regression test for pipe->poll_usage.
- a few documentation, kernel-doc and selftest fixes
/* Testing */
No build failures or warnings were observed.
/* Conflicts */
Merge conflicts with mainline
=============================
No known conflicts.
Merge conflicts with other trees
================================
[1]: https://lore.kernel.org/linux-next/amnyXEARrAoFoPAj@sirena.org.uk
This conflicts with the gfs2 tree in two places. Both are caused by
commit 91e27ed8a387c ("lockref: tidy up dead count handling") from
this tree, which renames __lockref_is_dead() to lockref_is_dead() and
converts all callers, including the ones in gfs2.
The first conflict is in fs/gfs2/glock.c against commit da26828b82a45
("gfs2: Remove the glock lru list and shrinker"). Reported in [1].
[2]: https://lore.kernel.org/linux-next/an208OpVMNEI2Zfo@sirena.org.uk
The second conflict is in fs/gfs2/lock_dlm.c against commit
657e5af4fe0b9 ("gfs2: harden gfs2_glock_hold").
The following changes since commit dc59e4fea9d83f03bad6bddf3fa2e52491777482:
Linux 7.2-rc1 (2026-06-28 12:01:31 -0700)
are available in the Git repository at:
git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/vfs-7.3-rc1.misc
for you to fetch changes up to dcacab904fe78d60840ba947a104993ee9ded887:
selftests/namespaces: Fix racy pipe handshake in timens and pidns_separate (2026-08-13 12:20:42 +0200)
----------------------------------------------------------------
vfs-7.3-rc1.misc
Please consider pulling these changes from the signed vfs-7.3-rc1.misc tag.
Thanks!
Christian
----------------------------------------------------------------
Agatha Isabelle Moreira (2):
fs: buffer: use clear_and_wake_up_bit() in unlock_buffer()
fs: jbd2: use clear_and_wake_up_bit() in journal_end_buffer_io_sync()
Amin Vakil (1):
selftests: proc: include fcntl.h in proc-pidns
Baokun Li (1):
fs: fix user path of nested backing files
Ben Dooks (1):
fs: nullfs should include mount.h
Breno Leitao (1):
fs/pipe: unify the page pools into a single per-pipe pool
Brian Foster (1):
iomap: always return status from iomap_write_iter
Chen Linxuan (1):
pidfd: hold exec_update_lock around namespace ioctl
Christian Brauner (5):
Merge patch series "fs: refactor code to use clear_and_wake_up_bit()"
Merge patch series "vfs: pass S_IFDIR mode to vfs_prepare_mode()"
Merge patch series "fs: Move long delayed work on system_dfl_long_wq"
Merge patch series "put_mnt_ns(): leave mounts connected"
Merge patch series "lockref tidy ups + touch ups to it's usage by dcache"
Jann Horn (1):
fs: document semantics of kstat::{uid,gid} fields
Johannes Berg (1):
seq_file: rename mangle_path to seq_mangle_path
Jori Koolstra (31):
vfs: pass S_IFDIR mode to vfs_prepare_mode()
9p: drop redundant S_IFDIR from mkdir
affs: drop redundant S_IFDIR from mkdir
afs: drop redundant S_IFDIR from mkdir
autofs: drop redundant S_IFDIR from mkdir
btrfs: drop redundant S_IFDIR from mkdir
ceph: drop redundant S_IFDIR from mkdir
ext2: drop redundant S_IFDIR from mkdir
ext4: drop redundant S_IFDIR from mkdir
f2fs: drop redundant S_IFDIR from mkdir
gfs2: drop redundant S_IFDIR from mkdir
hfs: drop redundant S_IFDIR from mkdir
hfsplus: drop redundant S_IFDIR from mkdir
hpfs: drop redundant S_IFDIR from mkdir
hugetlbfs: drop redundant S_IFDIR from mkdir
jffs2: drop redundant S_IFDIR from mkdir
jfs: drop redundant S_IFDIR from mkdir
minix: drop redundant S_IFDIR from mkdir
nilfs2: drop redundant S_IFDIR from mkdir
ntfs3: drop redundant S_IFDIR from mkdir
ocfs2: drop redundant S_IFDIR from mkdir
ocfs2: dlmfs: drop redundant S_IFDIR from mkdir
omfs: drop redundant S_IFDIR from mkdir
orangefs: drop redundant S_IFDIR from mkdir
ramfs: drop redundant S_IFDIR from mkdir
udf: drop redundant S_IFDIR from mkdir
ufs: drop redundant S_IFDIR from mkdir
nfs: drop redundant S_IFDIR from mkdir
ubifs: drop redundant S_IFDIR from mkdir
xfs: drop redundant S_IFDIR from mkdir
ntfs: drop redundant S_IFDIR from mkdir
Karl Mehltretter (1):
dcache: keep shrink_dcache_for_umount() making progress on busy roots
Luis Henriques (1):
posix_acl: remove useless code
Malaya Kumar Rout (1):
selftests/statmount: Fix file descriptor leak in setup_namespace
Manush Prajwal (1):
fs: fix switch/case indentation in sysfs() syscall
Marco Crivellari (5):
ufs: Move long delayed work on system_dfl_long_wq
fs/jffs2: Move long delayed work on system_dfl_long_wq
hfsplus: Move long delayed work on system_dfl_long_wq
hfs: Move long delayed work on system_dfl_long_wq
affs: Move long delayed work on system_dfl_long_wq
Mateusz Guzik (2):
lockref: tidy up dead count handling
dcache: use lockref routines for dead count checks
Matthew Wilcox (Oracle) (1):
fs: Free any excess xarray nodes in clear_inode()
Noah Orlando (2):
put_mnt_ns(): leave mounts connected
selftests/filesystems: add mntns cleanup test
Oleg Nesterov (2):
pipe: only enable the extra wake_up(rd_wait) for EPOLLET consumers
selftests/epoll: add a regression test for pipe->poll_usage
Randy Dunlap (1):
nstree: add/fix struct ns_id_req kernel-doc member fields
Ricardo B. Marlière (SUSE) (1):
selftests/namespaces: Fix racy pipe handshake in timens and pidns_separate
Shivank Sharma (1):
initramfs: fix typo in reserve_initrd_mem comment
Usama Arif (2):
fs/super: skip non-memcg-aware nr_cached_objects in memcg slab shrink
eventpoll: compute timer slack lazily in ep_poll()
Wang Yan (1):
selftests/filesystems: fix spelling error in statmount test comment
Yichong Chen (1):
fs: remove stale inode_insert5() kernel-doc parameter
Yu Peng (1):
fs: annotate inode timestamp accessors
Yuhong Cheng (1):
docs: filesystems: porting: fix spelling of returned and instead
이상호 (1):
romfs: detect hard link cycles
Documentation/filesystems/porting.rst | 2 +-
fs/9p/vfs_inode.c | 2 +-
fs/9p/vfs_inode_dotl.c | 1 -
fs/affs/namei.c | 2 +-
fs/affs/super.c | 2 +-
fs/afs/dir.c | 2 +-
fs/autofs/root.c | 2 +-
fs/backing-file.c | 2 +-
fs/btrfs/inode.c | 2 +-
fs/ceph/dir.c | 3 +-
fs/coda/dir.c | 7 +-
fs/dcache.c | 23 ++-
fs/erofs/zdata.c | 4 +-
fs/eventpoll.c | 6 +-
fs/ext2/namei.c | 2 +-
fs/ext4/namei.c | 2 +-
fs/f2fs/namei.c | 2 +-
fs/filesystems.c | 18 +-
fs/fuse/dir.c | 8 +
fs/gfs2/glock.c | 6 +-
fs/gfs2/inode.c | 2 +-
fs/gfs2/lock_dlm.c | 6 +-
fs/gfs2/quota.c | 4 +-
fs/hfs/dir.c | 2 +-
fs/hfs/super.c | 2 +-
fs/hfsplus/dir.c | 2 +-
fs/hfsplus/super.c | 2 +-
fs/hpfs/namei.c | 4 +-
fs/hugetlbfs/inode.c | 2 +-
fs/inode.c | 42 ++---
fs/iomap/buffered-io.c | 4 +-
fs/jffs2/dir.c | 2 -
fs/jffs2/wbuf.c | 2 +-
fs/jfs/namei.c | 2 +-
fs/minix/namei.c | 2 +-
fs/namei.c | 7 +-
fs/namespace.c | 2 +-
fs/nfs/dir.c | 2 +-
fs/nilfs2/namei.c | 2 +-
fs/ntfs/namei.c | 2 +-
fs/ntfs3/namei.c | 2 +-
fs/nullfs.c | 2 +
fs/ocfs2/dlmfs/dlmfs.c | 2 +-
fs/ocfs2/namei.c | 2 +-
fs/omfs/dir.c | 2 +-
fs/orangefs/namei.c | 2 +-
fs/pidfs.c | 43 +++--
fs/pipe.c | 191 ++++++++++-----------
fs/posix_acl.c | 2 -
fs/ramfs/inode.c | 2 +-
fs/romfs/super.c | 8 +
fs/seq_file.c | 11 +-
fs/smb/client/inode.c | 7 +
fs/stat.c | 2 +-
fs/super.c | 19 +-
fs/ubifs/dir.c | 2 +-
fs/udf/namei.c | 2 +-
fs/ufs/namei.c | 2 +-
fs/ufs/super.c | 2 +-
fs/xfs/xfs_buf.c | 4 +-
fs/xfs/xfs_iops.c | 2 +-
fs/xfs/xfs_qm.c | 4 +-
include/linux/fs.h | 20 +--
include/linux/lockref.h | 12 +-
include/linux/pipe_fs_i.h | 26 ++-
include/linux/seq_file.h | 2 +-
include/linux/stat.h | 4 +-
include/uapi/linux/nsfs.h | 7 +-
init/initramfs.c | 2 +-
lib/lockref.c | 2 +-
lib/seq_buf.c | 2 +-
tools/testing/selftests/Makefile | 1 +
.../filesystems/epoll/epoll_wakeup_test.c | 23 +++
.../selftests/filesystems/mntns_cleanup/.gitignore | 2 +
.../selftests/filesystems/mntns_cleanup/Makefile | 6 +
.../filesystems/mntns_cleanup/mntns_cleanup_test.c | 58 +++++++
.../filesystems/statmount/statmount_test.c | 5 +-
tools/testing/selftests/namespaces/nsid_test.c | 4 -
tools/testing/selftests/proc/proc-pidns.c | 1 +
79 files changed, 419 insertions(+), 266 deletions(-)
create mode 100644 tools/testing/selftests/filesystems/mntns_cleanup/.gitignore
create mode 100644 tools/testing/selftests/filesystems/mntns_cleanup/Makefile
create mode 100644 tools/testing/selftests/filesystems/mntns_cleanup/mntns_cleanup_test.c
^ permalink raw reply [flat|nested] 38+ messages in thread
* [GIT PULL 13/18 for v7.3] vfs mount
2026-08-14 13:07 [GIT PULL 00/18 for v7.3] v7.3 Christian Brauner
` (11 preceding siblings ...)
2026-08-14 13:13 ` [GIT PULL 12/18 for v7.3] vfs misc Christian Brauner
@ 2026-08-14 13:13 ` 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
` (4 subsequent siblings)
17 siblings, 1 reply; 38+ messages in thread
From: Christian Brauner @ 2026-08-14 13:13 UTC (permalink / raw)
To: Linus Torvalds; +Cc: Christian Brauner, linux-fsdevel, linux-kernel
Hey Linus,
/* Summary */
- Make the legacy mount API notify pollers of propagation changes. Changing
propagation via change_mnt_propagation() or MOVE_MOUNT_SET_GROUP update the
propagation relationship of the target mount. Unlike mount_setattr() neither
path touched the affected mount namespace. So pollers of
/proc/<pid>/mountinfo were never woken.
- Also remove a redundant panic() in mnt_init().
/* Testing */
No build failures or warnings were observed.
/* Conflicts */
Merge conflicts with mainline
=============================
No known conflicts.
Merge conflicts with other trees
================================
No known conflicts.
The following changes since commit dc59e4fea9d83f03bad6bddf3fa2e52491777482:
Linux 7.2-rc1 (2026-06-28 12:01:31 -0700)
are available in the Git repository at:
git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/vfs-7.3-rc1.mount
for you to fetch changes up to 083e8742e301a24f0c458696b45b481345888b85:
mount: remove redundant panic() in mnt_init() (2026-07-22 17:57:45 +0200)
----------------------------------------------------------------
vfs-7.3-rc1.mount
Please consider pulling these changes from the signed vfs-7.3-rc1.mount tag.
Thanks!
Christian
----------------------------------------------------------------
Guopeng Zhang (1):
fs/namespace: notify pollers of legacy propagation changes
Hamza Mahfooz (1):
mount: remove redundant panic() in mnt_init()
fs/namespace.c | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
^ permalink raw reply [flat|nested] 38+ messages in thread
* [GIT PULL 14/18 for v7.3] vfs netfs
2026-08-14 13:07 [GIT PULL 00/18 for v7.3] v7.3 Christian Brauner
` (12 preceding siblings ...)
2026-08-14 13:13 ` [GIT PULL 13/18 for v7.3] vfs mount Christian Brauner
@ 2026-08-14 13:14 ` 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
` (3 subsequent siblings)
17 siblings, 1 reply; 38+ messages in thread
From: Christian Brauner @ 2026-08-14 13:14 UTC (permalink / raw)
To: Linus Torvalds; +Cc: Christian Brauner, linux-fsdevel, linux-kernel
Hey Linus,
/* Summary */
This sunsets cachefiles ondemand mode. It was an effort to make fscache
usable as a kernel cache for lazy pulling. EROFS over fscache was its
only in-tree user. fscache has since become netfslib-oriented while
EROFS never acts as a network filesystem and EROFS over fscache has been
removed. So this cleans up the netfs, fscache and cachefiles side as
well.
/* Testing */
No build failures or warnings were observed.
/* Conflicts */
Merge conflicts with mainline
=============================
No known conflicts.
Merge conflicts with other trees
================================
No known conflicts.
The following changes since commit db2ddb87143519e20a95aa36c60b36107b736a58:
Linux 7.2-rc7 (2026-08-09 14:54:50 -0700)
are available in the Git repository at:
git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/vfs-7.3-rc1.netfs
for you to fetch changes up to 949eb95d5bcc530e6ce74cc95897c1849c53ea89:
cachefiles,netfs: sunset ondemand mode (2026-08-12 16:24:26 +0200)
----------------------------------------------------------------
vfs-7.3-rc1.netfs
Please consider pulling these changes from the signed vfs-7.3-rc1.netfs tag.
Thanks!
Christian
----------------------------------------------------------------
Gao Xiang (1):
cachefiles,netfs: sunset ondemand mode
Documentation/filesystems/caching/cachefiles.rst | 179 ------
fs/cachefiles/Kconfig | 12 -
fs/cachefiles/Makefile | 1 -
fs/cachefiles/daemon.c | 96 +--
fs/cachefiles/interface.c | 8 -
fs/cachefiles/internal.h | 134 ----
fs/cachefiles/io.c | 26 +-
fs/cachefiles/namei.c | 8 -
fs/cachefiles/ondemand.c | 761 -----------------------
include/linux/netfs.h | 9 -
include/trace/events/cachefiles.h | 184 +-----
include/uapi/linux/cachefiles.h | 68 --
kernel/bpf/btf.c | 7 -
13 files changed, 9 insertions(+), 1484 deletions(-)
delete mode 100644 fs/cachefiles/ondemand.c
delete mode 100644 include/uapi/linux/cachefiles.h
^ permalink raw reply [flat|nested] 38+ messages in thread
* [GIT PULL 15/18 for v7.3] vfs nilfs2
2026-08-14 13:07 [GIT PULL 00/18 for v7.3] v7.3 Christian Brauner
` (13 preceding siblings ...)
2026-08-14 13:14 ` [GIT PULL 14/18 for v7.3] vfs netfs Christian Brauner
@ 2026-08-14 13:14 ` Christian Brauner
2026-08-14 17:26 ` Viacheslav Dubeyko
2026-08-14 13:14 ` [GIT PULL 16/18 for v7.3] vfs ovl Christian Brauner
` (2 subsequent siblings)
17 siblings, 1 reply; 38+ messages in thread
From: Christian Brauner @ 2026-08-14 13:14 UTC (permalink / raw)
To: Linus Torvalds; +Cc: Christian Brauner, linux-fsdevel, linux-kernel
Hey Linus,
/* Summary */
This converts nilfs2 O_DIRECT reads to iomap and removes its use of
blockdev_direct_IO().
/* Testing */
No build failures or warnings were observed.
/* Conflicts */
Merge conflicts with mainline
=============================
No known conflicts.
Merge conflicts with other trees
================================
No known conflicts.
The following changes since commit 1590cf0329716306e948a8fc29f1d3ee87d3989f:
Linux 7.2-rc4 (2026-07-19 13:54:41 -0700)
are available in the Git repository at:
git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/vfs-7.3-rc1.nilfs2
for you to fetch changes up to d5c57d9bf03516d625521cd6cf5acfd93e3e63c7:
Merge patch series "nilfs2: convert O_DIRECT reads to iomap" (2026-07-27 11:43:15 +0200)
----------------------------------------------------------------
vfs-7.3-rc1.nilfs2
Please consider pulling these changes from the signed vfs-7.3-rc1.nilfs2 tag.
Thanks!
Christian
----------------------------------------------------------------
Christian Brauner (1):
Merge patch series "nilfs2: convert O_DIRECT reads to iomap"
Viacheslav Dubeyko (2):
nilfs2: add iomap operations for direct I/O reads
nilfs2: switch O_DIRECT reads to iomap
fs/nilfs2/Kconfig | 2 +-
fs/nilfs2/Makefile | 2 +-
fs/nilfs2/file.c | 40 +++++++++++++++++++++++++++---
fs/nilfs2/inode.c | 13 ----------
fs/nilfs2/iomap.c | 71 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
fs/nilfs2/iomap.h | 13 ++++++++++
6 files changed, 123 insertions(+), 18 deletions(-)
create mode 100644 fs/nilfs2/iomap.c
create mode 100644 fs/nilfs2/iomap.h
^ permalink raw reply [flat|nested] 38+ messages in thread
* [GIT PULL 16/18 for v7.3] vfs ovl
2026-08-14 13:07 [GIT PULL 00/18 for v7.3] v7.3 Christian Brauner
` (14 preceding siblings ...)
2026-08-14 13:14 ` [GIT PULL 15/18 for v7.3] vfs nilfs2 Christian Brauner
@ 2026-08-14 13:14 ` 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-14 13:15 ` [GIT PULL 18/18 for v7.3] vfs sync Christian Brauner
17 siblings, 1 reply; 38+ messages in thread
From: Christian Brauner @ 2026-08-14 13:14 UTC (permalink / raw)
To: Linus Torvalds; +Cc: Christian Brauner, linux-fsdevel, linux-kernel
Hey Linus,
/* Summary */
This lets the merged overlayfs mount itself be idmapped through
mount_setattr(MOUNT_ATTR_IDMAP). In addition to the already supported
idmapped lower and upper layers. The same overlay tree can then be
exposed under a different ownership view.
Overlayfs already normalizes every underlying id through the relevant
layer idmap when ovl_copyattr() copies attributes into the overlay
inode. So the overlay inode's i_uid and i_gid are overlay-final ids.
The overlay mount idmap composes on top of that and is applied at the
overlay-inode boundary only while the underlying layers keep being
accessed with the mounter's credentials through their own (possibly
idmapped) mounts.
So this only changes how the caller sees the overlay inode and never
widens the mounter's access to the layers. The second,
mounter-credential check in ovl_permission() against the real inode
stays on the layer idmap.
Most paths need no change because the VFS applies the mount idmap to
the overlay inode before overlayfs runs or after it returns at the
syscall boundary. Overlayfs only has to change where it bypasses the
generic path.
This also included is a fix for a double end_creating() on the overlayfs
casefold-mismatch path.
/* Testing */
No build failures or warnings were observed.
/* Conflicts */
Merge conflicts with mainline
=============================
No known conflicts.
Merge conflicts with other trees
================================
No known conflicts.
The following changes since commit dc59e4fea9d83f03bad6bddf3fa2e52491777482:
Linux 7.2-rc1 (2026-06-28 12:01:31 -0700)
are available in the Git repository at:
git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/vfs-7.3-rc1.ovl
for you to fetch changes up to 077ab8985ee278c3d8618182d335b0f0cd919e16:
ovl: fix double end_creating() on the casefold-mismatch path (2026-08-12 11:40:35 +0200)
----------------------------------------------------------------
vfs-7.3-rc1.ovl
Please consider pulling these changes from the signed vfs-7.3-rc1.ovl tag.
Thanks!
Christian
----------------------------------------------------------------
Christian Brauner (11):
ovl: handle idmapped mounts in ovl_create_object() and ovl_tmpfile()
ovl: handle idmapped mounts in ovl_permission()
ovl: handle idmapped mounts in ovl_setattr()
ovl: handle idmapped mounts in ovl_getattr()
ovl: handle idmapped mounts in ovl_set_acl()
ovl: allow idmapping overlay mounts
docs: document idmapped overlay mounts
selftests/filesystems/overlayfs: fix set_layers_via_fds link error
selftests/filesystems/overlayfs: test idmapped overlay mounts
ovl: document security.capability idmapping on the xattr forward paths
Merge patch series "ovl: support idmapped overlay mounts"
Vivek Parikh (1):
ovl: fix double end_creating() on the casefold-mismatch path
Documentation/filesystems/overlayfs.rst | 16 +
fs/overlayfs/dir.c | 17 +-
fs/overlayfs/inode.c | 26 +-
fs/overlayfs/overlayfs.h | 1 +
fs/overlayfs/super.c | 2 +-
fs/overlayfs/xattrs.c | 1 +
.../selftests/filesystems/overlayfs/.gitignore | 1 +
.../selftests/filesystems/overlayfs/Makefile | 2 +
.../filesystems/overlayfs/idmapped_mounts.c | 501 +++++++++++++++++++++
.../filesystems/overlayfs/set_layers_via_fds.c | 16 +-
10 files changed, 560 insertions(+), 23 deletions(-)
create mode 100644 tools/testing/selftests/filesystems/overlayfs/idmapped_mounts.c
^ permalink raw reply [flat|nested] 38+ messages in thread
* [GIT PULL 17/18 for v7.3] vfs super
2026-08-14 13:07 [GIT PULL 00/18 for v7.3] v7.3 Christian Brauner
` (15 preceding siblings ...)
2026-08-14 13:14 ` [GIT PULL 16/18 for v7.3] vfs ovl Christian Brauner
@ 2026-08-14 13:14 ` 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
17 siblings, 1 reply; 38+ messages in thread
From: Christian Brauner @ 2026-08-14 13:14 UTC (permalink / raw)
To: Linus Torvalds; +Cc: Christian Brauner, linux-fsdevel, linux-kernel
Hey Linus,
/* Summary */
- Make it possible to share a block device between multiple filesystems.
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. A block-device
freeze racing a btrfs device change could leave the whole filesystem
stuck frozen. A bdev_freeze() issued by "dmsetup suspend" or an LVM
snapshot resolves that holder to freeze the filesystem. and
bdev_thaw() resolves it again to thaw. A freeze landing while btrfs is
adding, removing or replacing a device freezes the filesystem. The
membership change then drops that link. So the matching thaw could no
longer find the superblock.
Forbid freezing a device for the duration of a membership change,
modelled on deny_write_access()/allow_write_access().
/* Testing */
No build failures or warnings were observed.
/* Conflicts */
Merge conflicts with mainline
=============================
[1]: https://lore.kernel.org/linux-next/ak4urgJRb-83KEUI@sirena.org.uk
This conflicts with commit d943e68edc5cb ("selftests/filesystems:
test O_TMPFILE creation on idmapped mounts") in
tools/testing/selftests/filesystems/Makefile and
tools/testing/selftests/filesystems/.gitignore. Both that commit and
commit a21db4dcaf4ad ("selftests/filesystems: add ustat() coverage")
from this tree register a new selftest on the same two lines. The
conflict resolves by keeping both.
This tag additionally conflicts with two of the earlier tags in this
pull request series, so please merge it after them:
- with vfs-7.3-rc1.mount
- with vfs-7.3-rc1.misc
Both resolve by keeping both sides.
diff --cc fs/namespace.c
index 3c382c2bdeec,7cef6dae0854..1ecd96c918b3
--- a/fs/namespace.c
+++ b/fs/namespace.c
@@@ -6270,6 -6259,11 +6270,8 @@@ void __init mnt_init(void
HASH_ZERO,
&mp_hash_shift, &mp_hash_mask, 0, 0);
- if (!mount_hashtable || !mountpoint_hashtable)
- panic("Failed to allocate mount hash table\n");
-
+ super_dev_init();
+
kernfs_init();
err = sysfs_init();
diff --cc fs/super.c
index 2c52c321885f,a62af36f7aaf..05e443173038
--- a/fs/super.c
+++ b/fs/super.c
@@@ -24,7 -24,7 +24,8 @@@
#include <linux/export.h>
#include <linux/slab.h>
#include <linux/blkdev.h>
+#include <linux/memcontrol.h>
+ #include <linux/rhashtable.h>
#include <linux/mount.h>
#include <linux/security.h>
#include <linux/writeback.h> /* for the emergency remount stuff */
diff --cc tools/testing/selftests/filesystems/.gitignore
index a78f894157de,1bd53d54553c..9eb185fb2f9d
--- a/tools/testing/selftests/filesystems/.gitignore
+++ b/tools/testing/selftests/filesystems/.gitignore
@@@ -5,4 -5,4 +5,5 @@@ fclo
file_stressor
anon_inode_test
kernfs_test
+idmapped_tmpfile
+ ustat_test
diff --cc tools/testing/selftests/filesystems/Makefile
index a7ec2ba2dd83,bbdd40b167fa..03be337c1f35
--- a/tools/testing/selftests/filesystems/Makefile
+++ b/tools/testing/selftests/filesystems/Makefile
@@@ -1,8 -1,7 +1,8 @@@
# SPDX-License-Identifier: GPL-2.0
CFLAGS += $(KHDR_INCLUDES)
- TEST_GEN_PROGS := devpts_pts file_stressor anon_inode_test kernfs_test fclog
+ TEST_GEN_PROGS := devpts_pts file_stressor anon_inode_test kernfs_test fclog ustat_test
+TEST_GEN_PROGS += idmapped_tmpfile
TEST_GEN_PROGS_EXTENDED := dnotify_test
include ../lib.mk
Merge conflicts with other trees
================================
No known conflicts.
The following changes since commit dc59e4fea9d83f03bad6bddf3fa2e52491777482:
Linux 7.2-rc1 (2026-06-28 12:01:31 -0700)
are available in the Git repository at:
git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/vfs-7.3-rc1.super
for you to fetch changes up to 9ac8fd831252e52aa78399eaccc11a72f6c2af1a:
super: fix dying superblock warning messages (2026-08-12 09:20:35 +0200)
----------------------------------------------------------------
vfs-7.3-rc1.super
Please consider pulling these changes from the signed vfs-7.3-rc1.super tag.
Thanks!
Christian
----------------------------------------------------------------
Christian Brauner (24):
block: allow making a block device unfreezable
block: split bdev_yield_claim() out of bdev_fput()
btrfs: deny freezing a device while it is being removed
btrfs: deny freezing a device while it is being added
btrfs: deny freezing devices undergoing a replace
Merge patch series "block,btrfs: fix frozen-superblock strand on device add/remove/replace"
super: convert s_count to refcount_t s_passive
super: take lock after last reference count
fs, block: move blk_mode_t and fop_flags_t into <linux/types.h>
ext4: use anonymous devices for KUnit test superblocks
ocfs2: don't reset s_dev on dismount
fs: maintain a global device-to-superblock table
fs: add dedicated block device open helpers for filesystems
xfs: port to fs_bdev_file_open_by_path()
btrfs: open via dedicated fs bdev helpers
ext4: open via dedicated fs bdev helpers
fs: look up superblocks via the device table in fs_holder_ops
fs: tolerate per-superblock freeze errors on shared devices
erofs: open via dedicated fs bdev helpers
f2fs: open via dedicated fs bdev helpers
super: make fs_holder_ops private
fs: look up the superblock via the device table in user_get_super()
selftests/filesystems: add ustat() coverage
Merge patch series "fs: support freeze/thaw/mark_dead/sync with shared devices"
Karl Mehltretter (1):
super: fix dying superblock warning messages
Yun Zhou (1):
block: reject block device inodes with i_rdev == 0 in lookup_bdev()
block/bdev.c | 125 ++++-
fs/btrfs/dev-replace.c | 65 ++-
fs/btrfs/ioctl.c | 4 +-
fs/btrfs/volumes.c | 105 +++-
fs/btrfs/volumes.h | 6 +-
fs/cramfs/inode.c | 2 +-
fs/erofs/super.c | 35 +-
fs/ext4/extents-test.c | 9 +-
fs/ext4/mballoc-test.c | 9 +-
fs/ext4/super.c | 12 +-
fs/f2fs/super.c | 6 +-
fs/internal.h | 1 +
fs/namespace.c | 2 +
fs/ocfs2/super.c | 1 -
fs/romfs/super.c | 2 +-
fs/super.c | 624 ++++++++++++++++-------
fs/xfs/xfs_buf.c | 2 +-
fs/xfs/xfs_super.c | 10 +-
include/linux/blk_types.h | 2 +-
include/linux/blkdev.h | 12 +-
include/linux/fs.h | 2 -
include/linux/fs/super.h | 8 +
include/linux/fs/super_types.h | 4 +-
include/linux/types.h | 2 +
tools/testing/selftests/filesystems/.gitignore | 1 +
tools/testing/selftests/filesystems/Makefile | 2 +-
tools/testing/selftests/filesystems/ustat_test.c | 135 +++++
27 files changed, 882 insertions(+), 306 deletions(-)
create mode 100644 tools/testing/selftests/filesystems/ustat_test.c
^ permalink raw reply [flat|nested] 38+ messages in thread
* [GIT PULL 18/18 for v7.3] vfs sync
2026-08-14 13:07 [GIT PULL 00/18 for v7.3] v7.3 Christian Brauner
` (16 preceding siblings ...)
2026-08-14 13:14 ` [GIT PULL 17/18 for v7.3] vfs super Christian Brauner
@ 2026-08-14 13:15 ` Christian Brauner
2026-08-17 22:25 ` pr-tracker-bot
17 siblings, 1 reply; 38+ messages in thread
From: Christian Brauner @ 2026-08-14 13:15 UTC (permalink / raw)
To: Linus Torvalds; +Cc: Christian Brauner, linux-fsdevel, linux-kernel
Hey Linus,
/* Summary */
This makes sync_inode_metadata() and writeback_single_inode() 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.
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.
ext2, udf, bfs, minix, fat and ext4 in nojournal mode have their data
integrity writeout fixed and are converted. affs drops metadata bh
tracking and mmb_fsync() is removed.
A few other fixes came out of this:
- a UAF in mark_buffer_write_io_error()
- missed inode writeback when racing with __writeback_single_inode()
- ext4 allocating the mapping_metadata_bhs struct on demand
- three fat fixes: a lost inode update in do_msdos_rename() with
DIRSYNC, inode buffer write errors not propagating out of
fat_sync_inode_metadata() and directory entries not being persisted on
fsync(2) of the root directory.
/* Testing */
No build failures or warnings were observed.
/* Conflicts */
Merge conflicts with mainline
=============================
No known conflicts.
Merge conflicts with other trees
================================
[1]: https://lore.kernel.org/linux-next/ams9K7q5NMj9ifmm@sirena.org.uk
This conflicts with the ext3 tree in fs/ext2/xattr.c between commit
6abf69e2e7f91 ("ext2: Simplify error handling of IO error when adding
xattr") from the ext3 tree and commit 356984d1a5c32 ("ext2: Fix lost
inode updates for IS_SYNC inodes") from this tree:
diff --cc fs/ext2/xattr.c
index 5f49ec4afc36f,be63f89402a38..0000000000000
--- a/fs/ext2/xattr.c
+++ b/fs/ext2/xattr.c
@@@ -777,16 -777,20 +777,16 @@@ ext2_xattr_set2(struct inode *inode, st
/* Update the inode. */
EXT2_I(inode)->i_file_acl = new_bh ? new_bh->b_blocknr : 0;
inode_set_ctime_current(inode);
+ mark_inode_dirty(inode);
if (IS_SYNC(inode)) {
error = sync_inode_metadata(inode, 1);
- /* In case sync failed due to ENOSPC the inode was actually
- * written (only some dirty data were not) so we just proceed
- * as if nothing happened and cleanup the unused block */
- if (error && error != -ENOSPC) {
- if (new_bh && new_bh != old_bh) {
- dquot_free_block_nodirty(inode, 1);
- mark_inode_dirty(inode);
- }
+ /*
+ * Inode writeout failed. Backing everything out is complex so
+ * let's just leave it for e2fsck to cleanup the mess.
+ */
+ if (error)
goto cleanup;
- } else
- mark_inode_dirty(inode);
- }
+ }
error = 0;
if (old_bh && old_bh != new_bh) {
The following changes since commit 1590cf0329716306e948a8fc29f1d3ee87d3989f:
Linux 7.2-rc4 (2026-07-19 13:54:41 -0700)
are available in the Git repository at:
git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/vfs-7.3-rc1.sync
for you to fetch changes up to 974d0be0cb8e48d63b9d413a2e1a8fba16cd2583:
writeback: Export __inode_attach_wb() (2026-07-28 14:08:52 +0200)
----------------------------------------------------------------
vfs-7.3-rc1.sync
Please consider pulling these changes from the signed vfs-7.3-rc1.sync tag.
Thanks!
Christian
----------------------------------------------------------------
Christian Brauner (5):
Merge patch series "fs: Fix missed inode write during fsync"
fat: Fix lost inode update in do_msdos_rename() with DIRSYNC
fat: Propagate inode buffer write errors from fat_sync_inode_metadata()
fat: Fix persisting directory entries on fsync(2) of the root directory
writeback: Export __inode_attach_wb()
Jan Kara (20):
affs: Drop support for metadata bh tracking
fs: Fix possible UAF in mark_buffer_write_io_error()
fs: Fix missed inode writeback when racing with __writeback_single_inode
ext4: Allocate mapping_metadata_bhs struct on demand
fs: Provide way for filesystem to wait for metadata writeback
ext2: Fix lost inode updates for IS_SYNC inodes
ext2: Drop __ext2_write_inode()
ext2: Avoid unnecessary inode buffer writeback for sync(2)
ext2: Fix data integrity writeout issues
udf: Fix data integrity writeout issues
udf: Use sync_inode_metadata() to writeout IS_SYNC inode
udf: Drop udf_sync_inode()
udf: Use sync_inode_metadata() in udf_evict_inode()
udf: Fold udf_update_inode() into udf_write_inode()
bfs: Fix data integrity writeout issues
minix: Fix data integrity writeout issues
ext4: Fix data integrity writeout issues in nojournal mode
fat: Fix missed inode writeback during fsync(2)
fat: Replace fat_sync_inode() with sync_inode_metadata()
vfs: Remove mmb_fsync()
fs/affs/affs.h | 2 -
fs/affs/amigaffs.c | 12 ++---
fs/affs/file.c | 25 +++++-----
fs/affs/inode.c | 13 ++----
fs/affs/namei.c | 9 ++--
fs/affs/super.c | 1 -
fs/bfs/dir.c | 9 +---
fs/bfs/inode.c | 30 +++++++++---
fs/buffer.c | 83 ++++-----------------------------
fs/ext2/dir.c | 2 +-
fs/ext2/ext2.h | 3 +-
fs/ext2/file.c | 17 +------
fs/ext2/inode.c | 49 ++++++++++++--------
fs/ext2/super.c | 1 +
fs/ext2/xattr.c | 4 +-
fs/ext4/ext4.h | 14 +++++-
fs/ext4/ext4_jbd2.c | 25 ++++++++--
fs/ext4/fsync.c | 24 ++--------
fs/ext4/inode.c | 102 +++++++++++++++++++++++++++--------------
fs/ext4/super.c | 16 +++++--
fs/fat/dir.c | 6 +--
fs/fat/fat.h | 1 -
fs/fat/file.c | 9 ++--
fs/fat/inode.c | 63 ++++++++++++++++++-------
fs/fat/misc.c | 7 +--
fs/fat/namei_msdos.c | 33 +++++++------
fs/fat/namei_vfat.c | 20 ++++----
fs/fs-writeback.c | 34 +++++++++++---
fs/libfs.c | 7 ++-
fs/minix/dir.c | 2 +-
fs/minix/file.c | 9 +---
fs/minix/inode.c | 52 ++++++++++++++-------
fs/minix/minix.h | 1 -
fs/udf/dir.c | 2 +-
fs/udf/file.c | 11 ++---
fs/udf/inode.c | 54 +++++++++++-----------
fs/udf/super.c | 1 +
fs/udf/udfdecl.h | 2 +-
include/linux/buffer_head.h | 4 --
include/linux/fs.h | 10 +++-
include/linux/fs/super_types.h | 2 +
41 files changed, 409 insertions(+), 362 deletions(-)
^ permalink raw reply [flat|nested] 38+ messages in thread
* Re: [GIT PULL 15/18 for v7.3] vfs nilfs2
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
0 siblings, 1 reply; 38+ messages in thread
From: Viacheslav Dubeyko @ 2026-08-14 17:26 UTC (permalink / raw)
To: Christian Brauner, Linus Torvalds; +Cc: linux-fsdevel, linux-kernel
Hi Christian,
Unfortunately, we've found some issues in the initial patchset. And v3
[1] is what we would like to send finally upstream.
Thanks,
Slava.
https://lore.kernel.org/linux-nilfs/20260812221154.1119137-1-slava@dubeyko.com/T/#t
On Fri, 2026-08-14 at 15:14 +0200, Christian Brauner wrote:
> Hey Linus,
>
> /* Summary */
>
> This converts nilfs2 O_DIRECT reads to iomap and removes its use of
> blockdev_direct_IO().
>
> /* Testing */
>
> No build failures or warnings were observed.
>
> /* Conflicts */
>
> Merge conflicts with mainline
> =============================
>
> No known conflicts.
>
> Merge conflicts with other trees
> ================================
>
> No known conflicts.
>
> The following changes since commit
> 1590cf0329716306e948a8fc29f1d3ee87d3989f:
>
> Linux 7.2-rc4 (2026-07-19 13:54:41 -0700)
>
> are available in the Git repository at:
>
> git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/vfs-
> 7.3-rc1.nilfs2
>
> for you to fetch changes up to
> d5c57d9bf03516d625521cd6cf5acfd93e3e63c7:
>
> Merge patch series "nilfs2: convert O_DIRECT reads to iomap" (2026-
> 07-27 11:43:15 +0200)
>
> ----------------------------------------------------------------
> vfs-7.3-rc1.nilfs2
>
> Please consider pulling these changes from the signed vfs-7.3-
> rc1.nilfs2 tag.
>
> Thanks!
> Christian
>
> ----------------------------------------------------------------
> Christian Brauner (1):
> Merge patch series "nilfs2: convert O_DIRECT reads to iomap"
>
> Viacheslav Dubeyko (2):
> nilfs2: add iomap operations for direct I/O reads
> nilfs2: switch O_DIRECT reads to iomap
>
> fs/nilfs2/Kconfig | 2 +-
> fs/nilfs2/Makefile | 2 +-
> fs/nilfs2/file.c | 40 +++++++++++++++++++++++++++---
> fs/nilfs2/inode.c | 13 ----------
> fs/nilfs2/iomap.c | 71
> ++++++++++++++++++++++++++++++++++++++++++++++++++++++
> fs/nilfs2/iomap.h | 13 ++++++++++
> 6 files changed, 123 insertions(+), 18 deletions(-)
> create mode 100644 fs/nilfs2/iomap.c
> create mode 100644 fs/nilfs2/iomap.h
^ permalink raw reply [flat|nested] 38+ messages in thread
* Re: [GIT PULL 15/18 for v7.3] vfs nilfs2
2026-08-14 17:26 ` Viacheslav Dubeyko
@ 2026-08-17 7:30 ` Christian Brauner
0 siblings, 0 replies; 38+ messages in thread
From: Christian Brauner @ 2026-08-17 7:30 UTC (permalink / raw)
To: Viacheslav Dubeyko; +Cc: Linus Torvalds, linux-fsdevel, linux-kernel
On Fri, Aug 14, 2026 at 10:26:56AM -0700, Viacheslav Dubeyko wrote:
> Hi Christian,
>
> Unfortunately, we've found some issues in the initial patchset. And v3
> [1] is what we would like to send finally upstream.
Ok, no problem. @Linus please discard this pull request.
I'll get an updated variant out in the second week of the merge window.
^ permalink raw reply [flat|nested] 38+ messages in thread
* Re: [GIT PULL 01/18 for v7.3] ipc misc
2026-08-14 13:10 ` [GIT PULL 01/18 for v7.3] ipc misc Christian Brauner
@ 2026-08-17 22:25 ` pr-tracker-bot
0 siblings, 0 replies; 38+ messages in thread
From: pr-tracker-bot @ 2026-08-17 22:25 UTC (permalink / raw)
To: Christian Brauner
Cc: Linus Torvalds, Christian Brauner, linux-fsdevel, linux-kernel
The pull request you sent on Fri, 14 Aug 2026 15:10:41 +0200:
> git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/ipc-7.3-rc1.misc
has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/043d7a2b4045df5eebc699c39bc3a571afb9f1ae
Thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/prtracker.html
^ permalink raw reply [flat|nested] 38+ messages in thread
* Re: [GIT PULL 02/18 for v7.3] kernel misc
2026-08-14 13:11 ` [GIT PULL 02/18 for v7.3] kernel misc Christian Brauner
@ 2026-08-17 22:25 ` pr-tracker-bot
0 siblings, 0 replies; 38+ messages in thread
From: pr-tracker-bot @ 2026-08-17 22:25 UTC (permalink / raw)
To: Christian Brauner
Cc: Linus Torvalds, Christian Brauner, linux-fsdevel, linux-kernel
The pull request you sent on Fri, 14 Aug 2026 15:11:13 +0200:
> git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/kernel-7.3-rc1.misc
has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/043d7a2b4045df5eebc699c39bc3a571afb9f1ae
Thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/prtracker.html
^ permalink raw reply [flat|nested] 38+ messages in thread
* Re: [GIT PULL 03/18 for v7.3] vfs binfmt
2026-08-14 13:11 ` [GIT PULL 03/18 for v7.3] vfs binfmt Christian Brauner
@ 2026-08-17 22:25 ` pr-tracker-bot
0 siblings, 0 replies; 38+ messages in thread
From: pr-tracker-bot @ 2026-08-17 22:25 UTC (permalink / raw)
To: Christian Brauner
Cc: Linus Torvalds, Christian Brauner, linux-fsdevel, linux-kernel
The pull request you sent on Fri, 14 Aug 2026 15:11:26 +0200:
> git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/vfs-7.3-rc1.binfmt
has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/b9cba7ebfe539f3e4bbdd03a1e0efa3b30b3f592
Thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/prtracker.html
^ permalink raw reply [flat|nested] 38+ messages in thread
* Re: [GIT PULL 04/18 for v7.3] vfs efs
2026-08-14 13:11 ` [GIT PULL 04/18 for v7.3] vfs efs Christian Brauner
@ 2026-08-17 22:25 ` pr-tracker-bot
0 siblings, 0 replies; 38+ messages in thread
From: pr-tracker-bot @ 2026-08-17 22:25 UTC (permalink / raw)
To: Christian Brauner
Cc: Linus Torvalds, Christian Brauner, linux-fsdevel, linux-kernel
The pull request you sent on Fri, 14 Aug 2026 15:11:41 +0200:
> git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/vfs-7.3-rc1.efs
has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/d31a688a49a82a48e0434aee9d851e094270a6ee
Thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/prtracker.html
^ permalink raw reply [flat|nested] 38+ messages in thread
* Re: [GIT PULL 05/18 for v7.3] vfs failfs
2026-08-14 13:11 ` [GIT PULL 05/18 for v7.3] vfs failfs Christian Brauner
@ 2026-08-17 22:25 ` pr-tracker-bot
0 siblings, 0 replies; 38+ messages in thread
From: pr-tracker-bot @ 2026-08-17 22:25 UTC (permalink / raw)
To: Christian Brauner
Cc: Linus Torvalds, Christian Brauner, linux-fsdevel, linux-kernel
The pull request you sent on Fri, 14 Aug 2026 15:11:51 +0200:
> git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/vfs-7.3-rc1.failfs
has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/cd051cfe1e35a471fc2cdf6d32fae6ee23305ecb
Thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/prtracker.html
^ permalink raw reply [flat|nested] 38+ messages in thread
* Re: [GIT PULL 06/18 for v7.3] vfs fat
2026-08-14 13:12 ` [GIT PULL 06/18 for v7.3] vfs fat Christian Brauner
@ 2026-08-17 22:25 ` pr-tracker-bot
0 siblings, 0 replies; 38+ messages in thread
From: pr-tracker-bot @ 2026-08-17 22:25 UTC (permalink / raw)
To: Christian Brauner
Cc: Linus Torvalds, Christian Brauner, linux-fsdevel, linux-kernel
The pull request you sent on Fri, 14 Aug 2026 15:12:03 +0200:
> git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/vfs-7.3-rc1.fat
has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/3d1f95267769caf5c3eb71a2c9586213ea0a3ef2
Thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/prtracker.html
^ permalink raw reply [flat|nested] 38+ messages in thread
* Re: [GIT PULL 07/18 for v7.3] vfs freevxfs
2026-08-14 13:12 ` [GIT PULL 07/18 for v7.3] vfs freevxfs Christian Brauner
@ 2026-08-17 22:25 ` pr-tracker-bot
0 siblings, 0 replies; 38+ messages in thread
From: pr-tracker-bot @ 2026-08-17 22:25 UTC (permalink / raw)
To: Christian Brauner
Cc: Linus Torvalds, Christian Brauner, linux-fsdevel, linux-kernel
The pull request you sent on Fri, 14 Aug 2026 15:12:14 +0200:
> git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/vfs-7.3-rc1.freevxfs
has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/d31a688a49a82a48e0434aee9d851e094270a6ee
Thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/prtracker.html
^ permalink raw reply [flat|nested] 38+ messages in thread
* Re: [GIT PULL 08/18 for v7.3] vfs iomap
2026-08-14 13:12 ` [GIT PULL 08/18 for v7.3] vfs iomap Christian Brauner
@ 2026-08-17 22:25 ` pr-tracker-bot
0 siblings, 0 replies; 38+ messages in thread
From: pr-tracker-bot @ 2026-08-17 22:25 UTC (permalink / raw)
To: Christian Brauner
Cc: Linus Torvalds, Christian Brauner, linux-fsdevel, linux-kernel
The pull request you sent on Fri, 14 Aug 2026 15:12:24 +0200:
> git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/vfs-7.3-rc1.iomap
has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/9ea8d6197d9f43a15ccb9c0dce601ec535d5da7e
Thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/prtracker.html
^ permalink raw reply [flat|nested] 38+ messages in thread
* Re: [GIT PULL 09/18 for v7.3] vfs kfunc
2026-08-14 13:12 ` [GIT PULL 09/18 for v7.3] vfs kfunc Christian Brauner
@ 2026-08-17 22:25 ` pr-tracker-bot
0 siblings, 0 replies; 38+ messages in thread
From: pr-tracker-bot @ 2026-08-17 22:25 UTC (permalink / raw)
To: Christian Brauner
Cc: Linus Torvalds, Christian Brauner, linux-fsdevel, linux-kernel
The pull request you sent on Fri, 14 Aug 2026 15:12:38 +0200:
> git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/vfs-7.3-rc1.kfunc
has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/de03b17ec046d81c4713bc54306579b9024fc513
Thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/prtracker.html
^ permalink raw reply [flat|nested] 38+ messages in thread
* Re: [GIT PULL 10/18 for v7.3] vfs kthread
2026-08-14 13:12 ` [GIT PULL 10/18 for v7.3] vfs kthread Christian Brauner
@ 2026-08-17 22:25 ` pr-tracker-bot
0 siblings, 0 replies; 38+ messages in thread
From: pr-tracker-bot @ 2026-08-17 22:25 UTC (permalink / raw)
To: Christian Brauner
Cc: Linus Torvalds, Christian Brauner, linux-fsdevel, linux-kernel
The pull request you sent on Fri, 14 Aug 2026 15:12:59 +0200:
> git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/vfs-7.3-rc1.kthread
has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/fff0150b0299f834fe2c335ce0eb5c68bb414cbd
Thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/prtracker.html
^ permalink raw reply [flat|nested] 38+ messages in thread
* Re: [GIT PULL 11/18 for v7.3] vfs lookup
2026-08-14 13:13 ` [GIT PULL 11/18 for v7.3] vfs lookup Christian Brauner
@ 2026-08-17 22:25 ` pr-tracker-bot
0 siblings, 0 replies; 38+ messages in thread
From: pr-tracker-bot @ 2026-08-17 22:25 UTC (permalink / raw)
To: Christian Brauner
Cc: Linus Torvalds, Christian Brauner, linux-fsdevel, linux-kernel
The pull request you sent on Fri, 14 Aug 2026 15:13:13 +0200:
> git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/vfs-7.3-rc1.lookup
has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/ab5ed08f2d8396fb8e3942569bbbd5cd569a753e
Thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/prtracker.html
^ permalink raw reply [flat|nested] 38+ messages in thread
* Re: [GIT PULL 12/18 for v7.3] vfs misc
2026-08-14 13:13 ` [GIT PULL 12/18 for v7.3] vfs misc Christian Brauner
@ 2026-08-17 22:25 ` pr-tracker-bot
0 siblings, 0 replies; 38+ messages in thread
From: pr-tracker-bot @ 2026-08-17 22:25 UTC (permalink / raw)
To: Christian Brauner
Cc: Linus Torvalds, Christian Brauner, linux-fsdevel, linux-kernel
The pull request you sent on Fri, 14 Aug 2026 15:13:26 +0200:
> git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/vfs-7.3-rc1.misc
has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/1c3e8cef79ea5f1415cff0d3c507e2e07b71ade8
Thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/prtracker.html
^ permalink raw reply [flat|nested] 38+ messages in thread
* Re: [GIT PULL 13/18 for v7.3] vfs mount
2026-08-14 13:13 ` [GIT PULL 13/18 for v7.3] vfs mount Christian Brauner
@ 2026-08-17 22:25 ` pr-tracker-bot
0 siblings, 0 replies; 38+ messages in thread
From: pr-tracker-bot @ 2026-08-17 22:25 UTC (permalink / raw)
To: Christian Brauner
Cc: Linus Torvalds, Christian Brauner, linux-fsdevel, linux-kernel
The pull request you sent on Fri, 14 Aug 2026 15:13:45 +0200:
> git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/vfs-7.3-rc1.mount
has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/c3d6d6dde3a3e11b421839497793da71ad6faa44
Thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/prtracker.html
^ permalink raw reply [flat|nested] 38+ messages in thread
* Re: [GIT PULL 14/18 for v7.3] vfs netfs
2026-08-14 13:14 ` [GIT PULL 14/18 for v7.3] vfs netfs Christian Brauner
@ 2026-08-17 22:25 ` pr-tracker-bot
0 siblings, 0 replies; 38+ messages in thread
From: pr-tracker-bot @ 2026-08-17 22:25 UTC (permalink / raw)
To: Christian Brauner
Cc: Linus Torvalds, Christian Brauner, linux-fsdevel, linux-kernel
The pull request you sent on Fri, 14 Aug 2026 15:14:05 +0200:
> git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/vfs-7.3-rc1.netfs
has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/55668d04e3a821281f885e59ac951a22525b78e3
Thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/prtracker.html
^ permalink raw reply [flat|nested] 38+ messages in thread
* Re: [GIT PULL 16/18 for v7.3] vfs ovl
2026-08-14 13:14 ` [GIT PULL 16/18 for v7.3] vfs ovl Christian Brauner
@ 2026-08-17 22:25 ` pr-tracker-bot
0 siblings, 0 replies; 38+ messages in thread
From: pr-tracker-bot @ 2026-08-17 22:25 UTC (permalink / raw)
To: Christian Brauner
Cc: Linus Torvalds, Christian Brauner, linux-fsdevel, linux-kernel
The pull request you sent on Fri, 14 Aug 2026 15:14:32 +0200:
> git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/vfs-7.3-rc1.ovl
has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/aaed66fadba2d2de8fe0daa0aa3eac827d2076b9
Thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/prtracker.html
^ permalink raw reply [flat|nested] 38+ messages in thread
* Re: [GIT PULL 17/18 for v7.3] vfs super
2026-08-14 13:14 ` [GIT PULL 17/18 for v7.3] vfs super Christian Brauner
@ 2026-08-17 22:25 ` pr-tracker-bot
0 siblings, 0 replies; 38+ messages in thread
From: pr-tracker-bot @ 2026-08-17 22:25 UTC (permalink / raw)
To: Christian Brauner
Cc: Linus Torvalds, Christian Brauner, linux-fsdevel, linux-kernel
The pull request you sent on Fri, 14 Aug 2026 15:14:46 +0200:
> git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/vfs-7.3-rc1.super
has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/1781f0b3d75caa22376cf7fa0224f9aca696580d
Thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/prtracker.html
^ permalink raw reply [flat|nested] 38+ messages in thread
* Re: [GIT PULL 18/18 for v7.3] vfs sync
2026-08-14 13:15 ` [GIT PULL 18/18 for v7.3] vfs sync Christian Brauner
@ 2026-08-17 22:25 ` pr-tracker-bot
0 siblings, 0 replies; 38+ messages in thread
From: pr-tracker-bot @ 2026-08-17 22:25 UTC (permalink / raw)
To: Christian Brauner
Cc: Linus Torvalds, Christian Brauner, linux-fsdevel, linux-kernel
The pull request you sent on Fri, 14 Aug 2026 15:15:02 +0200:
> git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/vfs-7.3-rc1.sync
has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/ff68e5f557f69a08fdcfa4ce8b1b809d63bd4f45
Thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/prtracker.html
^ 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®