Hey Linus, This is the batch of pull requests for the v6.18 merge window! This was a pretty usual cycle. Not light, not particularly heavy. There are a few minor filesystem specific changes such as afs and pidfs but nothing that's really worth mentioning. Same goes for iomap and rust. There are some changes around clone3() and copy_process() that lead to some cleanups. There's some workqueue chagnes that affect all of fs but it's not all that exciting and we don't have to care once all the cleanup is done and the semantics for per-cpu and unbounded workqueues are simplified and clarified. There's a pretty interesting writeback series by Jan Kara that fixes a nasty issue causing lockups reported by users when a systemd unit reading lots of files from a filesystem mounted with the lazytime mount option exits. With the lazytime mount option enabled we can be switching many dirty inodes on cgroup exit to the parent cgroup. The numbers observed in practice when a systemd slice of a large cron job exits can easily reach hundreds of thousands or millions. The overall time complexity of switching all the inodes to the correct wb is quadratic leading to workers being pegged for hours consuming 100% of the CPU and switching inodes to the parent wb. That issue should be gone. We also have a series that shrinks struct inode by 16 bytes. This is really something I care about because struct inode in contrast to struct file and struct dentry both of which are meticulously clean by now (I mean, it could alwasy be better, but you know...) struct inode is still a giant dumping ground where everyone is made to pay for features that only 3 filesystems actually end up using. First step, I've moved fscrpt and fsverity pointers out of struct inode and into the individual filesystems that care about this. Hopefully more to come in that area. There's also some preliminary cleanup related to the inode lifetime rework that is currently under way leading to less open-coded accesses to internal inode members and some simplifications for iput_final(). Last but not least there's a bunch of namespace related rework this cycle. This specifically also addresses a complaint you had a few weeks back about ns_alloc_inum(). That's now completely gone and so is the special-casing of the init network namespace initialization. Initialization, reference counting, and cleanup are now unified and statically derived from the namespace type allowing the compiler to catch obvious bugs. The namespace iterator infrastructure I did for the mount namespace some time back is now extended and generalized to cover all other namespace types. As a first step this allows the implemenation of namespace file handles. As with pidfs file handles, namespace file handles are exhaustive, meaning it is not required to actually hold a reference to nsfs to be able to decode aka open_by_handle_at() a namespace file handle. It has the same advantage as pidfs file handles have. It's possible to reliably and for the lifetime of the system refer to a namespace without pinning any resources and to compare them trivially. The namespace file handle layout is exposed as uapi and has a stable and extensible format. The stable format means that userspace may construct its own namespace file handles without going through name_to_handle_at(). Thanks! Christian
Hey Linus,
/* Summary */
This contains the usual selections of misc updates for this cycle.
Features:
- Add "initramfs_options" parameter to set initramfs mount options. This
allows to add specific mount options to the rootfs to e.g., limit the
memory size.
- Add RWF_NOSIGNAL flag for pwritev2()
Add RWF_NOSIGNAL flag for pwritev2. This flag prevents the SIGPIPE
signal from being raised when writing on disconnected pipes or
sockets. The flag is handled directly by the pipe filesystem and
converted to the existing MSG_NOSIGNAL flag for sockets.
- Allow to pass pid namespace as procfs mount option
Ever since the introduction of pid namespaces, procfs has had very
implicit behaviour surrounding them (the pidns used by a procfs mount
is auto-selected based on the mounting process's active pidns, and the
pidns itself is basically hidden once the mount has been constructed).
This implicit behaviour has historically meant that userspace was
required to do some special dances in order to configure the pidns of
a procfs mount as desired. Examples include:
* In order to bypass the mnt_too_revealing() check, Kubernetes creates
a procfs mount from an empty pidns so that user namespaced
containers can be nested (without this, the nested containers would
fail to mount procfs). But this requires forking off a helper
process because you cannot just one-shot this using mount(2).
* Container runtimes in general need to fork into a container before
configuring its mounts, which can lead to security issues in the
case of shared-pidns containers (a privileged process in the pidns
can interact with your container runtime process).
While SUID_DUMP_DISABLE and user namespaces make this less of an
issue, the strict need for this due to a minor uAPI wart is kind of
unfortunate.
Things would be much easier if there was a way for userspace to just
specify the pidns they want. So this pull request contains changes
to implement a new "pidns" argument which can be set using
fsconfig(2):
fsconfig(procfd, FSCONFIG_SET_FD, "pidns", NULL, nsfd);
fsconfig(procfd, FSCONFIG_SET_STRING, "pidns", "/proc/self/ns/pid", 0);
or classic mount(2) / mount(8):
// mount -t proc -o pidns=/proc/self/ns/pid proc /tmp/proc
mount("proc", "/tmp/proc", "proc", MS_..., "pidns=/proc/self/ns/pid");
Cleanups:
- Remove the last references to EXPORT_OP_ASYNC_LOCK.
- Make file_remove_privs_flags() static.
- Remove redundant __GFP_NOWARN when GFP_NOWAIT is used.
- Use try_cmpxchg() in start_dir_add().
- Use try_cmpxchg() in sb_init_done_wq().
- Replace offsetof() with struct_size() in ioctl_file_dedupe_range().
- Remove vfs_ioctl() export.
- Replace rwlock() with spinlock in epoll code as rwlock causes priority
inversion on preempt rt kernels.
- Make ns_entries in fs/proc/namespaces const.
- Use a switch() statement() in init_special_inode() just like we do in
may_open().
- Use struct_size() in dir_add() in the initramfs code.
- Use str_plural() in rd_load_image().
- Replace strcpy() with strscpy() in find_link().
- Rename generic_delete_inode() to inode_just_drop() and
generic_drop_inode() to inode_generic_drop().
- Remove unused arguments from fcntl_{g,s}et_rw_hint().
Fixes:
- Document @name parameter for name_contains_dotdot() helper.
- Fix spelling mistake.
- Always return zero from replace_fd() instead of the file descriptor number.
- Limit the size for copy_file_range() in compat mode to prevent a signed
overflow.
- Fix debugfs mount options not being applied.
- Verify the inode mode when loading it from disk in minixfs.
- Verify the inode mode when loading it from disk in cramfs.
- Don't trigger automounts with RESOLVE_NO_XDEV
If openat2() was called with RESOLVE_NO_XDEV it didn't traverse
through automounts, but could still trigger them.
- Add FL_RECLAIM flag to show_fl_flags() macro so it appears in tracepoints.
- Fix unused variable warning in rd_load_image() on s390.
- Make INITRAMFS_PRESERVE_MTIME depend on BLK_DEV_INITRD.
- Use ns_capable_noaudit() when determining net sysctl permissions.
- Don't call path_put() under namespace semaphore in listmount() and statmount().
/* Testing */
gcc (Debian 14.2.0-19) 14.2.0
Debian clang version 19.1.7 (3+b1)
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 8f5ae30d69d7543eee0d70083daf4de8fe15d585:
Linux 6.17-rc1 (2025-08-10 19:41:16 +0300)
are available in the Git repository at:
git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/vfs-6.18-rc1.misc
for you to fetch changes up to 28986dd7e38fb5ba2f180f9eb3ff330798719369:
fcntl: trim arguments (2025-09-26 10:21:23 +0200)
Please consider pulling these changes from the signed vfs-6.18-rc1.misc tag.
Thanks!
Christian
----------------------------------------------------------------
vfs-6.18-rc1.misc
----------------------------------------------------------------
Aleksa Sarai (3):
pidns: move is-ancestor logic to helper
procfs: add "pidns" mount option
selftests/proc: add tests for new pidns APIs
Askar Safin (4):
namei: move cross-device check to traverse_mounts
namei: remove LOOKUP_NO_XDEV check from handle_mounts
namei: move cross-device check to __traverse_mounts
openat2: don't trigger automounts with RESOLVE_NO_XDEV
Charalampos Mitrodimas (1):
debugfs: fix mount options not being applied
Christian Brauner (5):
Merge patch series "vfs: if RESOLVE_NO_XDEV passed to openat2, don't *trigger* automounts"
Merge patch series "procfs: make reference pidns more user-visible"
Merge patch "eventpoll: Fix priority inversion problem"
statmount: don't call path_put() under namespace semaphore
listmount: don't call path_put() under namespace semaphore
Christian Göttsche (1):
pid: use ns_capable_noaudit() when determining net sysctl permissions
Christoph Hellwig (1):
fs: mark file_remove_privs_flags static
Geert Uytterhoeven (1):
init: INITRAMFS_PRESERVE_MTIME should depend on BLK_DEV_INITRD
Greg Kroah-Hartman (1):
fs: remove vfs_ioctl export
Jeff Layton (1):
filelock: add FL_RECLAIM to show_fl_flags() macro
Kanchan Joshi (1):
fcntl: trim arguments
Kriish Sharma (1):
fs: document 'name' parameter for name_contains_dotdot()
Lauri Vasama (1):
Add RWF_NOSIGNAL flag for pwritev2
Lichen Liu (1):
fs: Add 'initramfs_options' to set initramfs mount options
Mateusz Guzik (2):
fs: use the switch statement in init_special_inode()
fs: rename generic_delete_inode() and generic_drop_inode()
Max Kellermann (1):
fs/proc/namespaces: make ns_entries const
Miklos Szeredi (1):
copy_file_range: limit size if in compat mode
Nam Cao (1):
eventpoll: Replace rwlock with spinlock
Qianfeng Rong (1):
fs-writeback: Remove redundant __GFP_NOWARN
Tetsuo Handa (3):
vfs: show filesystem name at dump_inode()
minixfs: Verify inode mode when loading from disk
cramfs: Verify inode mode when loading from disk
Thiago Becker (1):
locks: Remove the last reference to EXPORT_OP_ASYNC_LOCK.
Thomas Weißschuh (1):
fs: always return zero on success from replace_fd()
Thorsten Blum (4):
initrd: Fix unused variable warning in rd_load_image() on s390
initramfs: Use struct_size() helper to improve dir_add()
initrd: Use str_plural() in rd_load_image()
initramfs: Replace strcpy() with strscpy() in find_link()
Uros Bizjak (2):
fs: Use try_cmpxchg() in start_dir_add()
fs: Use try_cmpxchg() in sb_init_done_wq()
Xichao Zhao (2):
fs: fix "writen"->"written"
fs: Replace offsetof() with struct_size() in ioctl_file_dedupe_range()
Documentation/admin-guide/kernel-parameters.txt | 3 +
Documentation/filesystems/porting.rst | 4 +-
Documentation/filesystems/proc.rst | 8 +
Documentation/filesystems/vfs.rst | 4 +-
block/bdev.c | 2 +-
drivers/dax/super.c | 2 +-
drivers/misc/ibmasm/ibmasmfs.c | 2 +-
drivers/usb/gadget/function/f_fs.c | 2 +-
drivers/usb/gadget/legacy/inode.c | 2 +-
fs/9p/vfs_super.c | 2 +-
fs/afs/inode.c | 4 +-
fs/btrfs/inode.c | 2 +-
fs/ceph/super.c | 2 +-
fs/configfs/mount.c | 2 +-
fs/cramfs/inode.c | 11 +-
fs/dcache.c | 4 +-
fs/debugfs/inode.c | 11 +-
fs/efivarfs/super.c | 2 +-
fs/eventpoll.c | 139 +++-------------
fs/ext4/super.c | 2 +-
fs/f2fs/super.c | 2 +-
fs/fcntl.c | 10 +-
fs/file.c | 5 +-
fs/fs-writeback.c | 2 +-
fs/fuse/inode.c | 2 +-
fs/gfs2/super.c | 2 +-
fs/hostfs/hostfs_kern.c | 2 +-
fs/inode.c | 30 ++--
fs/ioctl.c | 5 +-
fs/kernfs/mount.c | 2 +-
fs/locks.c | 4 +-
fs/minix/inode.c | 8 +-
fs/namei.c | 22 ++-
fs/namespace.c | 106 ++++++++----
fs/nfs/inode.c | 2 +-
fs/ocfs2/dlmfs/dlmfs.c | 2 +-
fs/orangefs/super.c | 2 +-
fs/overlayfs/super.c | 2 +-
fs/pidfs.c | 2 +-
fs/pipe.c | 6 +-
fs/proc/inode.c | 2 +-
fs/proc/namespaces.c | 6 +-
fs/proc/root.c | 98 ++++++++++-
fs/pstore/inode.c | 2 +-
fs/ramfs/inode.c | 2 +-
fs/read_write.c | 14 +-
fs/smb/client/cifsfs.c | 2 +-
fs/super.c | 8 +-
fs/ubifs/super.c | 2 +-
fs/xfs/xfs_super.c | 2 +-
include/linux/fs.h | 10 +-
include/linux/pid_namespace.h | 9 +
include/trace/events/filelock.h | 3 +-
include/uapi/linux/fs.h | 5 +-
init/Kconfig | 1 +
init/do_mounts_rd.c | 14 +-
init/initramfs.c | 5 +-
kernel/bpf/inode.c | 2 +-
kernel/pid.c | 2 +-
kernel/pid_namespace.c | 22 ++-
mm/shmem.c | 2 +-
net/socket.c | 3 +
tools/testing/selftests/proc/.gitignore | 1 +
tools/testing/selftests/proc/Makefile | 1 +
tools/testing/selftests/proc/proc-pidns.c | 211 ++++++++++++++++++++++++
65 files changed, 592 insertions(+), 265 deletions(-)
create mode 100644 tools/testing/selftests/proc/proc-pidns.c
The pull request you sent on Fri, 26 Sep 2025 16:18:55 +0200: > git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/vfs-6.18-rc1.misc has been merged into torvalds/linux.git: https://git.kernel.org/torvalds/c/b7ce6fa90fd9554482847b19756a06232c1dc78c Thank you! -- Deet-doot-dot, I am a bot. https://korg.docs.kernel.org/prtracker.html
On Fri, Sep 26, 2025 at 04:18:55PM +0200, Christian Brauner wrote:
> Hey Linus,
>
> /* Summary */
> This contains the usual selections of misc updates for this cycle.
>
> Features:
>
> - Add "initramfs_options" parameter to set initramfs mount options. This
> allows to add specific mount options to the rootfs to e.g., limit the
> memory size.
>
> - Add RWF_NOSIGNAL flag for pwritev2()
>
> Add RWF_NOSIGNAL flag for pwritev2. This flag prevents the SIGPIPE
> signal from being raised when writing on disconnected pipes or
> sockets. The flag is handled directly by the pipe filesystem and
> converted to the existing MSG_NOSIGNAL flag for sockets.
>
> - Allow to pass pid namespace as procfs mount option
>
> Ever since the introduction of pid namespaces, procfs has had very
> implicit behaviour surrounding them (the pidns used by a procfs mount
> is auto-selected based on the mounting process's active pidns, and the
> pidns itself is basically hidden once the mount has been constructed).
>
> This implicit behaviour has historically meant that userspace was
> required to do some special dances in order to configure the pidns of
> a procfs mount as desired. Examples include:
>
> * In order to bypass the mnt_too_revealing() check, Kubernetes creates
> a procfs mount from an empty pidns so that user namespaced
> containers can be nested (without this, the nested containers would
> fail to mount procfs). But this requires forking off a helper
> process because you cannot just one-shot this using mount(2).
>
> * Container runtimes in general need to fork into a container before
> configuring its mounts, which can lead to security issues in the
> case of shared-pidns containers (a privileged process in the pidns
> can interact with your container runtime process).
> While SUID_DUMP_DISABLE and user namespaces make this less of an
> issue, the strict need for this due to a minor uAPI wart is kind of
> unfortunate.
>
> Things would be much easier if there was a way for userspace to just
> specify the pidns they want. So this pull request contains changes
> to implement a new "pidns" argument which can be set using
> fsconfig(2):
>
> fsconfig(procfd, FSCONFIG_SET_FD, "pidns", NULL, nsfd);
> fsconfig(procfd, FSCONFIG_SET_STRING, "pidns", "/proc/self/ns/pid", 0);
>
> or classic mount(2) / mount(8):
>
> // mount -t proc -o pidns=/proc/self/ns/pid proc /tmp/proc
> mount("proc", "/tmp/proc", "proc", MS_..., "pidns=/proc/self/ns/pid");
>
> Cleanups:
>
> - Remove the last references to EXPORT_OP_ASYNC_LOCK.
>
> - Make file_remove_privs_flags() static.
>
> - Remove redundant __GFP_NOWARN when GFP_NOWAIT is used.
>
> - Use try_cmpxchg() in start_dir_add().
>
> - Use try_cmpxchg() in sb_init_done_wq().
>
> - Replace offsetof() with struct_size() in ioctl_file_dedupe_range().
>
> - Remove vfs_ioctl() export.
>
> - Replace rwlock() with spinlock in epoll code as rwlock causes priority
> inversion on preempt rt kernels.
>
> - Make ns_entries in fs/proc/namespaces const.
>
> - Use a switch() statement() in init_special_inode() just like we do in
> may_open().
>
> - Use struct_size() in dir_add() in the initramfs code.
>
> - Use str_plural() in rd_load_image().
>
> - Replace strcpy() with strscpy() in find_link().
>
> - Rename generic_delete_inode() to inode_just_drop() and
> generic_drop_inode() to inode_generic_drop().
>
> - Remove unused arguments from fcntl_{g,s}et_rw_hint().
>
> Fixes:
>
> - Document @name parameter for name_contains_dotdot() helper.
>
> - Fix spelling mistake.
>
> - Always return zero from replace_fd() instead of the file descriptor number.
>
> - Limit the size for copy_file_range() in compat mode to prevent a signed
> overflow.
>
> - Fix debugfs mount options not being applied.
>
> - Verify the inode mode when loading it from disk in minixfs.
>
> - Verify the inode mode when loading it from disk in cramfs.
>
> - Don't trigger automounts with RESOLVE_NO_XDEV
>
> If openat2() was called with RESOLVE_NO_XDEV it didn't traverse
> through automounts, but could still trigger them.
>
> - Add FL_RECLAIM flag to show_fl_flags() macro so it appears in tracepoints.
>
> - Fix unused variable warning in rd_load_image() on s390.
>
> - Make INITRAMFS_PRESERVE_MTIME depend on BLK_DEV_INITRD.
>
> - Use ns_capable_noaudit() when determining net sysctl permissions.
>
> - Don't call path_put() under namespace semaphore in listmount() and statmount().
>
> /* Testing */
>
> gcc (Debian 14.2.0-19) 14.2.0
> Debian clang version 19.1.7 (3+b1)
>
> No build failures or warnings were observed.
>
> /* Conflicts */
There is one issue that was reported after I had generated the pull
request. The mnt_ns_release() function can be passed a NULL pointer and
that case needs to be handled.
I'm appending a patch that I would ask you to please just apply on top
of it. If you rather want me resend the pull request please just tell
me!
Hey Linus,
/* Summary */
This contains some work around mount api handling:
* Output the warning message for mnt_too_revealing() triggered during
fsmount() to the fscontext log. This makes it possible for the mount
tool to output appropriate warnings on the command line. For example,
with the newest fsopen()-based mount(8) from util-linux, the error
messages now look like:
# mount -t proc proc /tmp
mount: /tmp: fsmount() failed: VFS: Mount too revealing.
dmesg(1) may have more information after failed mount system call.
* Do not consume fscontext log entries when returning -EMSGSIZE
Userspace generally expects APIs that return -EMSGSIZE to allow for
them to adjust their buffer size and retry the operation. However, the
fscontext log would previously clear the message even in the -EMSGSIZE
case.
Given that it is very cheap for us to check whether the buffer is too
small before we remove the message from the ring buffer, let's just do
that instead.
* Drop an unused argument from do_remount().
/* Testing */
gcc (Debian 14.2.0-19) 14.2.0
Debian clang version 19.1.7 (3+b1)
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/aNO0BKAXphoFEgUk@finisterre.sirena.org.uk
The following changes since commit 8f5ae30d69d7543eee0d70083daf4de8fe15d585:
Linux 6.17-rc1 (2025-08-10 19:41:16 +0300)
are available in the Git repository at:
git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/vfs-6.18-rc1.mount
for you to fetch changes up to 1e5f0fb41fccf5ecbb5506551790335c9578e320:
vfs: fs/namespace.c: remove ms_flags argument from do_remount (2025-08-11 16:08:31 +0200)
Please consider pulling these changes from the signed vfs-6.18-rc1.mount tag.
Thanks!
Christian
----------------------------------------------------------------
vfs-6.18-rc1.mount
----------------------------------------------------------------
Aleksa Sarai (4):
fscontext: add custom-prefix log helpers
vfs: output mount_too_revealing() errors to fscontext
fscontext: do not consume log entries when returning -EMSGSIZE
selftests/filesystems: add basic fscontext log tests
Askar Safin (1):
vfs: fs/namespace.c: remove ms_flags argument from do_remount
Christian Brauner (3):
Merge patch series "fs: Remove old mount API helpers"
Merge patch series "vfs: output mount_too_revealing() errors to fscontext"
Merge patch series "fscontext: do not consume log entries when returning -EMSGSIZE"
Pedro Falcato (3):
fs: Remove mount_nodev
fs: Remove mount_bdev
docs/vfs: Remove mentions to the old mount API helpers
Documentation/filesystems/vfs.rst | 27 +----
fs/fsopen.c | 70 +++++++------
fs/namespace.c | 10 +-
fs/super.c | 63 ------------
include/linux/fs.h | 6 --
include/linux/fs_context.h | 18 +++-
tools/testing/selftests/filesystems/.gitignore | 1 +
tools/testing/selftests/filesystems/Makefile | 2 +-
tools/testing/selftests/filesystems/fclog.c | 130 +++++++++++++++++++++++++
9 files changed, 192 insertions(+), 135 deletions(-)
create mode 100644 tools/testing/selftests/filesystems/fclog.c
The pull request you sent on Fri, 26 Sep 2025 16:18:56 +0200: > git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/vfs-6.18-rc1.mount has been merged into torvalds/linux.git: https://git.kernel.org/torvalds/c/3a2a5b278fb8d4cdb3154b8e4a38352b945f96fd Thank you! -- Deet-doot-dot, I am a bot. https://korg.docs.kernel.org/prtracker.html
Hey Linus,
/* Summary */
This contains a series I originally wrote and that Eric brought over the
finish line. It moves out the i_crypt_info and i_verity_info pointers
out of 'struct inode' and into the fs-specific part of the inode.
So now the few filesytems that actually make use of this pay the price
in their own private inode storage instead of forcing it upon every user
of struct inode.
The pointer for the crypt and verity info is simply found by storing an
offset to its address in struct fsverity_operations and struct
fscrypt_operations. This shrinks struct inode by 16 bytes.
I hope to move a lot more out of it in the future so that struct inode
becomes really just about very core stuff that we need, much like struct
dentry and struct file, instead of the dumping ground it has become over
the years.
On top of this are a various changes associated with the ongoing inode
lifetime handling rework that multiple people are pushing forward:
* Stop accessing inode->i_count directly in f2fs and gfs2. They simply
should use the __iget() and iput() helpers.
* Make the i_state flags an enum.
* Rework the iput() logic
Currently, if we are the last iput, and we have the I_DIRTY_TIME bit
set, we will grab a reference on the inode again and then mark it
dirty and then redo the put. This is to make sure we delay the time
update for as long as possible.
We can rework this logic to simply dec i_count if it is not 1, and if
it is do the time update while still holding the i_count reference.
Then we can replace the atomic_dec_and_lock with locking the ->i_lock
and doing atomic_dec_and_test, since we did the atomic_add_unless
above.
* Add an icount_read() helper and convert everyone that accesses
inode->i_count directly for this purpose to use the helper.
* Expand dump_inode() to dump more information about an inode helping in
debugging.
* Add some might_sleep() annotations to iput() and associated helpers.
/* Testing */
gcc (Debian 14.2.0-19) 14.2.0
Debian clang version 19.1.7 (3+b1)
No build failures or warnings were observed.
/* Conflicts */
Merge conflicts with mainline
=============================
No known conflicts.
Merge conflicts with other trees
================================
[1] This will have a merge conflict with the vfs-6.18-rc1.misc pull request.
The conflict resolution is to simply use exactly what the tag here
brings in.
The following changes since commit 8f5ae30d69d7543eee0d70083daf4de8fe15d585:
Linux 6.17-rc1 (2025-08-10 19:41:16 +0300)
are available in the Git repository at:
git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/vfs-6.18-rc1.inode
for you to fetch changes up to c3c616c53dbabddf32a0485bd133d8d3b9f6656a:
Merge branch 'vfs-6.18.inode.refcount.preliminaries' (2025-09-19 16:46:02 +0200)
Please consider pulling these changes from the signed vfs-6.18-rc1.inode tag.
Thanks!
Christian
----------------------------------------------------------------
vfs-6.18-rc1.inode
----------------------------------------------------------------
Christian Brauner (3):
Merge patch series "Move fscrypt and fsverity info out of struct inode"
inode: fix whitespace issues
Merge branch 'vfs-6.18.inode.refcount.preliminaries'
Eric Biggers (13):
fscrypt: replace raw loads of info pointer with helper function
fscrypt: add support for info in fs-specific part of inode
ext4: move crypt info pointer to fs-specific part of inode
f2fs: move crypt info pointer to fs-specific part of inode
ubifs: move crypt info pointer to fs-specific part of inode
ceph: move crypt info pointer to fs-specific part of inode
fs: remove inode::i_crypt_info
fsverity: add support for info in fs-specific part of inode
ext4: move verity info pointer to fs-specific part of inode
f2fs: move verity info pointer to fs-specific part of inode
btrfs: move verity info pointer to fs-specific part of inode
fs: remove inode::i_verity_info
fsverity: check IS_VERITY() in fsverity_cleanup_inode()
Josef Bacik (4):
fs: stop accessing ->i_count directly in f2fs and gfs2
fs: make the i_state flags an enum
fs: rework iput logic
fs: add an icount_read helper
Mateusz Guzik (1):
fs: expand dump_inode()
Max Kellermann (1):
fs: add might_sleep() annotation to iput() and more
arch/powerpc/platforms/cell/spufs/file.c | 2 +-
fs/btrfs/btrfs_inode.h | 5 +
fs/btrfs/inode.c | 5 +-
fs/btrfs/verity.c | 2 +
fs/ceph/crypto.c | 2 +
fs/ceph/inode.c | 1 +
fs/ceph/mds_client.c | 2 +-
fs/ceph/super.h | 1 +
fs/crypto/bio.c | 2 +-
fs/crypto/crypto.c | 14 +-
fs/crypto/fname.c | 11 +-
fs/crypto/fscrypt_private.h | 4 +-
fs/crypto/hooks.c | 2 +-
fs/crypto/inline_crypt.c | 12 +-
fs/crypto/keysetup.c | 43 +++---
fs/crypto/policy.c | 7 +-
fs/ext4/crypto.c | 2 +
fs/ext4/ext4.h | 8 +
fs/ext4/ialloc.c | 4 +-
fs/ext4/super.c | 6 +
fs/ext4/verity.c | 2 +
fs/f2fs/f2fs.h | 6 +
fs/f2fs/super.c | 14 +-
fs/f2fs/verity.c | 2 +
fs/fs-writeback.c | 2 +-
fs/gfs2/ops_fstype.c | 2 +-
fs/hpfs/inode.c | 2 +-
fs/inode.c | 90 ++++++++---
fs/nfs/inode.c | 4 +-
fs/notify/fsnotify.c | 2 +-
fs/smb/client/inode.c | 2 +-
fs/ubifs/crypto.c | 2 +
fs/ubifs/super.c | 2 +-
fs/ubifs/ubifs.h | 4 +
fs/verity/enable.c | 6 +-
fs/verity/fsverity_private.h | 9 +-
fs/verity/open.c | 23 +--
fs/verity/verify.c | 2 +-
fs/xfs/xfs_inode.c | 2 +-
fs/xfs/xfs_trace.h | 2 +-
include/linux/fs.h | 246 ++++++++++++++++---------------
include/linux/fscrypt.h | 40 ++++-
include/linux/fsverity.h | 57 +++++--
include/trace/events/filelock.h | 2 +-
security/landlock/fs.c | 2 +-
45 files changed, 428 insertions(+), 234 deletions(-)
The pull request you sent on Fri, 26 Sep 2025 16:18:57 +0200: > git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/vfs-6.18-rc1.inode has been merged into torvalds/linux.git: https://git.kernel.org/torvalds/c/56e7b310717697109998966cb3c4d3e490d09200 Thank you! -- Deet-doot-dot, I am a bot. https://korg.docs.kernel.org/prtracker.html
Hey Linus,
/* Summary */
This contains minor fixes and cleanups to the iomap code.
Nothing really stands out here.
/* Testing */
gcc (Debian 14.2.0-19) 14.2.0
Debian clang version 19.1.7 (3+b1)
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 8f5ae30d69d7543eee0d70083daf4de8fe15d585:
Linux 6.17-rc1 (2025-08-10 19:41:16 +0300)
are available in the Git repository at:
git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/vfs-6.18-rc1.iomap
for you to fetch changes up to c59c965292f75e39cc4cfefb50d56d4b1900812e:
Merge patch series "iomap: cleanups ahead of adding fuse support" (2025-09-19 14:17:16 +0200)
Please consider pulling these changes from the signed vfs-6.18-rc1.iomap tag.
Thanks!
Christian
----------------------------------------------------------------
vfs-6.18-rc1.iomap
----------------------------------------------------------------
Christian Brauner (1):
Merge patch series "iomap: cleanups ahead of adding fuse support"
Darrick J. Wong (2):
iomap: trace iomap_zero_iter zeroing activities
iomap: error out on file IO when there is no inline_data buffer
fs/iomap/buffered-io.c | 18 +++++++++++++-----
fs/iomap/direct-io.c | 3 +++
fs/iomap/trace.h | 1 +
3 files changed, 17 insertions(+), 5 deletions(-)
The pull request you sent on Fri, 26 Sep 2025 16:18:58 +0200: > git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/vfs-6.18-rc1.iomap has been merged into torvalds/linux.git: https://git.kernel.org/torvalds/c/029a4eb589129450f2735df825f784dd7e8c4c63 Thank you! -- Deet-doot-dot, I am a bot. https://korg.docs.kernel.org/prtracker.html
Hey Linus,
/* Summary */
This just contains a few changes to pid_nr_ns() to make it more robust
and cleanups or improves a few users that ab- or misuse it currently.
/* Testing */
gcc (Debian 14.2.0-19) 14.2.0
Debian clang version 19.1.7 (3+b1)
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 8f5ae30d69d7543eee0d70083daf4de8fe15d585:
Linux 6.17-rc1 (2025-08-10 19:41:16 +0300)
are available in the Git repository at:
git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/vfs-6.18-rc1.pidfs
for you to fetch changes up to da664c6db895f70c2be8c3dd371c273b6f8b920f:
Merge patch series "Improve pid_nr_ns()" (2025-08-19 13:38:26 +0200)
Please consider pulling these changes from the signed vfs-6.18-rc1.pidfs tag.
Thanks!
Christian
----------------------------------------------------------------
vfs-6.18-rc1.pidfs
----------------------------------------------------------------
Christian Brauner (1):
Merge patch series "Improve pid_nr_ns()"
Oleg Nesterov (3):
pid: make __task_pid_nr_ns(ns => NULL) safe for zombie callers
pid: change bacct_add_tsk() to use task_ppid_nr_ns()
pid: change task_state() to use task_ppid_nr_ns()
gaoxiang17 (1):
pid: Add a judgment for ns null in pid_nr_ns
fs/proc/array.c | 4 +---
kernel/pid.c | 5 +++--
kernel/tsacct.c | 3 +--
3 files changed, 5 insertions(+), 7 deletions(-)
On 09/26, Christian Brauner wrote: > > Oleg Nesterov (3): > pid: make __task_pid_nr_ns(ns => NULL) safe for zombie callers ... > gaoxiang17 (1): > pid: Add a judgment for ns null in pid_nr_ns Oh... I already tried to complain twice https://lore.kernel.org/all/20250819142557.GA11345@redhat.com/ https://lore.kernel.org/all/20250901153054.GA5587@redhat.com/ One of these patches should be reverted. It doesn't really hurt, but it makes no sense to check ns != NULL twice. Oleg.
On Wed, Oct 01, 2025 at 04:18:12PM +0200, Oleg Nesterov wrote: > On 09/26, Christian Brauner wrote: > > > > Oleg Nesterov (3): > > pid: make __task_pid_nr_ns(ns => NULL) safe for zombie callers > ... > > gaoxiang17 (1): > > pid: Add a judgment for ns null in pid_nr_ns > > Oh... I already tried to complain twice > > https://lore.kernel.org/all/20250819142557.GA11345@redhat.com/ > https://lore.kernel.org/all/20250901153054.GA5587@redhat.com/ > > One of these patches should be reverted. It doesn't really hurt, but it makes > no sense to check ns != NULL twice. Sorry, those somehow got lost. Do you mind sending me a revert?
On 10/06, Christian Brauner wrote:
>
> On Wed, Oct 01, 2025 at 04:18:12PM +0200, Oleg Nesterov wrote:
> > On 09/26, Christian Brauner wrote:
> > >
> > > Oleg Nesterov (3):
> > > pid: make __task_pid_nr_ns(ns => NULL) safe for zombie callers
> > ...
> > > gaoxiang17 (1):
> > > pid: Add a judgment for ns null in pid_nr_ns
> >
> > Oh... I already tried to complain twice
> >
> > https://lore.kernel.org/all/20250819142557.GA11345@redhat.com/
> > https://lore.kernel.org/all/20250901153054.GA5587@redhat.com/
> >
> > One of these patches should be reverted. It doesn't really hurt, but it makes
> > no sense to check ns != NULL twice.
>
> Sorry, those somehow got lost.
> Do you mind sending me a revert?
Thanks, will do.
But which one? I am biased, but I'd prefer to revert 006568ab4c5ca2309ceb36
("pid: Add a judgment for ns null in pid_nr_ns")
Mostly because abdfd4948e45c51b1916 ("pid: make __task_pid_nr_ns(ns => NULL)
safe for zombie callers") tries to explain why this change makes sense and
why it is not easy to avoid ns == NULL.
OK?
Oleg.
On Tue, Oct 07, 2025 at 04:34:19PM +0200, Oleg Nesterov wrote:
> On 10/06, Christian Brauner wrote:
> >
> > On Wed, Oct 01, 2025 at 04:18:12PM +0200, Oleg Nesterov wrote:
> > > On 09/26, Christian Brauner wrote:
> > > >
> > > > Oleg Nesterov (3):
> > > > pid: make __task_pid_nr_ns(ns => NULL) safe for zombie callers
> > > ...
> > > > gaoxiang17 (1):
> > > > pid: Add a judgment for ns null in pid_nr_ns
> > >
> > > Oh... I already tried to complain twice
> > >
> > > https://lore.kernel.org/all/20250819142557.GA11345@redhat.com/
> > > https://lore.kernel.org/all/20250901153054.GA5587@redhat.com/
> > >
> > > One of these patches should be reverted. It doesn't really hurt, but it makes
> > > no sense to check ns != NULL twice.
> >
> > Sorry, those somehow got lost.
> > Do you mind sending me a revert?
>
> Thanks, will do.
>
> But which one? I am biased, but I'd prefer to revert 006568ab4c5ca2309ceb36
> ("pid: Add a judgment for ns null in pid_nr_ns")
>
> Mostly because abdfd4948e45c51b1916 ("pid: make __task_pid_nr_ns(ns => NULL)
> safe for zombie callers") tries to explain why this change makes sense and
> why it is not easy to avoid ns == NULL.
>
> OK?
Yes, sounds perfect. Thank you!
The pull request you sent on Fri, 26 Sep 2025 16:18:59 +0200: > git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/vfs-6.18-rc1.pidfs has been merged into torvalds/linux.git: https://git.kernel.org/torvalds/c/e571372101522fa91735dac6d30a160b2abe600c Thank you! -- Deet-doot-dot, I am a bot. https://korg.docs.kernel.org/prtracker.html
Hey Linus,
/* Summary */
This contains a few minor vfs rust changes:
* Add the pid namespace Rust wrappers to the correct MAINTAINERS entry.
* Use to_result() in the Rust file error handling code.
* Update imports for fs and pid_namespce Rust wrappers.
/* Testing */
gcc (Debian 14.2.0-19) 14.2.0
Debian clang version 19.1.7 (3+b1)
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 8f5ae30d69d7543eee0d70083daf4de8fe15d585:
Linux 6.17-rc1 (2025-08-10 19:41:16 +0300)
are available in the Git repository at:
git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/vfs-6.18-rc1.rust
for you to fetch changes up to c37adf34a5dc511e017b5a3bab15fe3171269e46:
rust: file: use to_result for error handling (2025-09-01 13:55:22 +0200)
Please consider pulling these changes from the signed vfs-6.18-rc1.rust tag.
Thanks!
Christian
----------------------------------------------------------------
vfs-6.18-rc1.rust
----------------------------------------------------------------
Alice Ryhl (1):
pid: add Rust files to MAINTAINERS
Onur Özkan (1):
rust: file: use to_result for error handling
Shankari Anand (2):
rust: pid_namespace: update AlwaysRefCounted imports from sync::aref
rust: fs: update ARef and AlwaysRefCounted imports from sync::aref
MAINTAINERS | 1 +
rust/kernel/fs/file.rs | 10 +++++-----
rust/kernel/pid_namespace.rs | 5 +----
3 files changed, 7 insertions(+), 9 deletions(-)
The pull request you sent on Fri, 26 Sep 2025 16:19:00 +0200: > git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/vfs-6.18-rc1.rust has been merged into torvalds/linux.git: https://git.kernel.org/torvalds/c/df897265c0c6fc4b758b07f3a756e96b6f2ab81f Thank you! -- Deet-doot-dot, I am a bot. https://korg.docs.kernel.org/prtracker.html
Hey Linus,
/* Summary */
This contains various workqueue changes affecting the filesystem layer.
Currently if a user enqueue a work item using schedule_delayed_work()
the used wq is "system_wq" (per-cpu wq) while queue_delayed_work() use
WORK_CPU_UNBOUND (used when a cpu is not specified). The same applies to
schedule_work() that is using system_wq and queue_work(), that makes use
again of WORK_CPU_UNBOUND.
This replaces the use of system_wq and system_unbound_wq. system_wq is a
per-CPU workqueue which isn't very obvious from the name and
system_unbound_wq is to be used when locality is not required.
So this renames system_wq to system_percpu_wq, and system_unbound_wq to
system_dfl_wq.
This also adds a new WQ_PERCPU flag to allow the fs subsystem users to
explicitly request the use of per-CPU behavior. Both WQ_UNBOUND and
WQ_PERCPU flags coexist for one release cycle to allow callers to
transition their calls. WQ_UNBOUND will be removed in a next release
cycle.
/* Testing */
gcc (Debian 14.2.0-19) 14.2.0
Debian clang version 19.1.7 (3+b1)
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/aNEKzrMMxLAVHGIn@finisterre.sirena.org.uk
This will have a merge conflict with changes in the quota tree.
Steven's proposed resolution is correct.
No known conflicts.
The following changes since commit 8f5ae30d69d7543eee0d70083daf4de8fe15d585:
Linux 6.17-rc1 (2025-08-10 19:41:16 +0300)
are available in the Git repository at:
git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/vfs-6.18-rc1.workqueue
for you to fetch changes up to 56ce6c8b11a95c65764e27cb6021b1e98ccc4212:
Merge patch series "fs: replace wq users and add WQ_PERCPU to alloc_workqueue() users" (2025-09-19 16:15:12 +0200)
Please consider pulling these changes from the signed vfs-6.18-rc1.workqueue tag.
Thanks!
Christian
----------------------------------------------------------------
vfs-6.18-rc1.workqueue
----------------------------------------------------------------
Christian Brauner (1):
Merge patch series "fs: replace wq users and add WQ_PERCPU to alloc_workqueue() users"
Marco Crivellari (3):
fs: replace use of system_unbound_wq with system_dfl_wq
fs: replace use of system_wq with system_percpu_wq
fs: WQ_PERCPU added to alloc_workqueue users
fs/afs/callback.c | 4 ++--
fs/afs/main.c | 4 ++--
fs/afs/write.c | 2 +-
fs/aio.c | 2 +-
fs/bcachefs/btree_write_buffer.c | 2 +-
fs/bcachefs/io_read.c | 8 ++++----
fs/bcachefs/journal_io.c | 2 +-
fs/bcachefs/super.c | 10 +++++-----
fs/btrfs/block-group.c | 2 +-
fs/btrfs/disk-io.c | 2 +-
fs/btrfs/extent_map.c | 2 +-
fs/btrfs/space-info.c | 4 ++--
fs/btrfs/zoned.c | 2 +-
fs/ceph/super.c | 2 +-
fs/coredump.c | 2 +-
fs/dlm/lowcomms.c | 2 +-
fs/dlm/main.c | 2 +-
fs/ext4/mballoc.c | 2 +-
fs/fs-writeback.c | 4 ++--
fs/fuse/dev.c | 2 +-
fs/fuse/inode.c | 2 +-
fs/gfs2/main.c | 5 +++--
fs/gfs2/ops_fstype.c | 6 ++++--
fs/netfs/misc.c | 2 +-
fs/netfs/objects.c | 2 +-
fs/nfs/namespace.c | 2 +-
fs/nfs/nfs4renewd.c | 2 +-
fs/nfsd/filecache.c | 2 +-
fs/notify/mark.c | 4 ++--
fs/ocfs2/dlm/dlmdomain.c | 3 ++-
fs/ocfs2/dlmfs/dlmfs.c | 3 ++-
fs/quota/dquot.c | 2 +-
fs/smb/client/cifsfs.c | 16 +++++++++++-----
fs/smb/server/ksmbd_work.c | 2 +-
fs/smb/server/transport_rdma.c | 3 ++-
fs/super.c | 3 ++-
fs/verity/verify.c | 2 +-
fs/xfs/xfs_log.c | 3 +--
fs/xfs/xfs_mru_cache.c | 3 ++-
fs/xfs/xfs_super.c | 15 ++++++++-------
40 files changed, 79 insertions(+), 65 deletions(-)
The pull request you sent on Fri, 26 Sep 2025 16:19:01 +0200: > git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/vfs-6.18-rc1.workqueue has been merged into torvalds/linux.git: https://git.kernel.org/torvalds/c/b786405685087912601e24d94c1670523c829137 Thank you! -- Deet-doot-dot, I am a bot. https://korg.docs.kernel.org/prtracker.html
Hey Linus,
/* Testing */
This contains the changes to enable support for clone3() on nios2 which
apparently is still a thing. The more exciting part of this is that it
cleans up the inconsistency in how the 64-bit flag argument is passed
from copy_process() into the various other copy_*() helpers.
gcc (Debian 14.2.0-19) 14.2.0
Debian clang version 19.1.7 (3+b1)
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 8f5ae30d69d7543eee0d70083daf4de8fe15d585:
Linux 6.17-rc1 (2025-08-10 19:41:16 +0300)
are available in the Git repository at:
git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/kernel-6.18-rc1.clone3
for you to fetch changes up to 76cea30ad520238160bf8f5e2f2803fcd7a08d22:
Merge patch series "nios2: Add architecture support for clone3" (2025-09-01 15:31:40 +0200)
Please consider pulling these changes from the signed kernel-6.18-rc1.clone3 tag.
Thanks!
Christian
----------------------------------------------------------------
kernel-6.18-rc1.clone3
----------------------------------------------------------------
Christian Brauner (1):
Merge patch series "nios2: Add architecture support for clone3"
Simon Schuster (4):
copy_sighand: Handle architectures where sizeof(unsigned long) < sizeof(u64)
copy_process: pass clone_flags as u64 across calltree
arch: copy_thread: pass clone_flags as u64
nios2: implement architecture-specific portion of sys_clone3
arch/alpha/kernel/process.c | 2 +-
arch/arc/kernel/process.c | 2 +-
arch/arm/kernel/process.c | 2 +-
arch/arm64/kernel/process.c | 2 +-
arch/csky/kernel/process.c | 2 +-
arch/hexagon/kernel/process.c | 2 +-
arch/loongarch/kernel/process.c | 2 +-
arch/m68k/kernel/process.c | 2 +-
arch/microblaze/kernel/process.c | 2 +-
arch/mips/kernel/process.c | 2 +-
arch/nios2/include/asm/syscalls.h | 1 +
arch/nios2/include/asm/unistd.h | 2 --
arch/nios2/kernel/entry.S | 6 ++++++
arch/nios2/kernel/process.c | 2 +-
arch/nios2/kernel/syscall_table.c | 1 +
arch/openrisc/kernel/process.c | 2 +-
arch/parisc/kernel/process.c | 2 +-
arch/powerpc/kernel/process.c | 2 +-
arch/riscv/kernel/process.c | 2 +-
arch/s390/kernel/process.c | 2 +-
arch/sh/kernel/process_32.c | 2 +-
arch/sparc/kernel/process_32.c | 2 +-
arch/sparc/kernel/process_64.c | 2 +-
arch/um/kernel/process.c | 2 +-
arch/x86/include/asm/fpu/sched.h | 2 +-
arch/x86/include/asm/shstk.h | 4 ++--
arch/x86/kernel/fpu/core.c | 2 +-
arch/x86/kernel/process.c | 2 +-
arch/x86/kernel/shstk.c | 2 +-
arch/xtensa/kernel/process.c | 2 +-
block/blk-ioc.c | 2 +-
fs/namespace.c | 2 +-
include/linux/cgroup.h | 4 ++--
include/linux/cred.h | 2 +-
include/linux/iocontext.h | 6 +++---
include/linux/ipc_namespace.h | 4 ++--
include/linux/lsm_hook_defs.h | 2 +-
include/linux/mnt_namespace.h | 2 +-
include/linux/nsproxy.h | 2 +-
include/linux/pid_namespace.h | 4 ++--
include/linux/rseq.h | 4 ++--
include/linux/sched/task.h | 2 +-
include/linux/security.h | 4 ++--
include/linux/sem.h | 4 ++--
include/linux/time_namespace.h | 4 ++--
include/linux/uprobes.h | 4 ++--
include/linux/user_events.h | 4 ++--
include/linux/utsname.h | 4 ++--
include/net/net_namespace.h | 4 ++--
include/trace/events/task.h | 6 +++---
ipc/namespace.c | 2 +-
ipc/sem.c | 2 +-
kernel/cgroup/namespace.c | 2 +-
kernel/cred.c | 2 +-
kernel/events/uprobes.c | 2 +-
kernel/fork.c | 10 +++++-----
kernel/nsproxy.c | 4 ++--
kernel/pid_namespace.c | 2 +-
kernel/sched/core.c | 4 ++--
kernel/sched/fair.c | 2 +-
kernel/sched/sched.h | 4 ++--
kernel/time/namespace.c | 2 +-
kernel/utsname.c | 2 +-
net/core/net_namespace.c | 2 +-
security/apparmor/lsm.c | 2 +-
security/security.c | 2 +-
security/selinux/hooks.c | 2 +-
security/tomoyo/tomoyo.c | 2 +-
68 files changed, 95 insertions(+), 89 deletions(-)
The pull request you sent on Fri, 26 Sep 2025 16:19:02 +0200: > git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/kernel-6.18-rc1.clone3 has been merged into torvalds/linux.git: https://git.kernel.org/torvalds/c/722df25ddf4f13e303dcc4cd65b3df5b197a79e6 Thank you! -- Deet-doot-dot, I am a bot. https://korg.docs.kernel.org/prtracker.html
On Fri, Sep 26, 2025 at 04:19:02PM +0200, Christian Brauner wrote:
>Hey Linus,
>
>/* Testing */
>This contains the changes to enable support for clone3() on nios2 which
>apparently is still a thing. The more exciting part of this is that it
>cleans up the inconsistency in how the 64-bit flag argument is passed
>from copy_process() into the various other copy_*() helpers.
>
>gcc (Debian 14.2.0-19) 14.2.0
>Debian clang version 19.1.7 (3+b1)
>
>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 8f5ae30d69d7543eee0d70083daf4de8fe15d585:
>
> Linux 6.17-rc1 (2025-08-10 19:41:16 +0300)
>
>are available in the Git repository at:
>
> git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/kernel-6.18-rc1.clone3
Hi Christian,
After pulling this tag, I started seeing a build failure.
a9769a5b9878 ("rv: Add support for LTL monitors") which was merged a few weeks
ago added a usage of task_newtask:
static void handle_task_newtask(void *data, struct task_struct *task, unsigned long flags)
But commit edd3cb05c00a ("copy_process: pass clone_flags as u64 across
calltree") from this pull request modified the signature without updating rv.
./include/rv/ltl_monitor.h: In function ‘ltl_monitor_init’:
./include/rv/ltl_monitor.h:75:51: error: passing argument 1 of ‘check_trace_callback_type_task_newtask’ from incompatible pointer type [-Wincompatible-pointer-types]
75 | rv_attach_trace_probe(name, task_newtask, handle_task_newtask);
| ^~~~~~~~~~~~~~~~~~~
| |
| void (*)(void *, struct task_struct *, long unsigned int)
./include/rv/instrumentation.h:18:48: note: in definition of macro ‘rv_attach_trace_probe’
18 | check_trace_callback_type_##tp(rv_handler); \
| ^~~~~~~~~~
I've fixed it up by simply:
diff --git a/include/rv/ltl_monitor.h b/include/rv/ltl_monitor.h
index 67031a774e3d3..5368cf5fd623e 100644
--- a/include/rv/ltl_monitor.h
+++ b/include/rv/ltl_monitor.h
@@ -56,7 +56,7 @@ static void ltl_task_init(struct task_struct *task, bool task_creation)
ltl_atoms_fetch(task, mon);
}
-static void handle_task_newtask(void *data, struct task_struct *task, unsigned long flags)
+static void handle_task_newtask(void *data, struct task_struct *task, u64 flags)
{
ltl_task_init(task, true);
}
--
Thanks,
Sasha
On Sat, Sep 27, 2025 at 08:19:12AM -0400, Sasha Levin wrote:
> On Fri, Sep 26, 2025 at 04:19:02PM +0200, Christian Brauner wrote:
> > Hey Linus,
> >
> > /* Testing */
> > This contains the changes to enable support for clone3() on nios2 which
> > apparently is still a thing. The more exciting part of this is that it
> > cleans up the inconsistency in how the 64-bit flag argument is passed
> > from copy_process() into the various other copy_*() helpers.
> >
> > gcc (Debian 14.2.0-19) 14.2.0
> > Debian clang version 19.1.7 (3+b1)
> >
> > 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 8f5ae30d69d7543eee0d70083daf4de8fe15d585:
> >
> > Linux 6.17-rc1 (2025-08-10 19:41:16 +0300)
> >
> > are available in the Git repository at:
> >
> > git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/kernel-6.18-rc1.clone3
>
> Hi Christian,
>
> After pulling this tag, I started seeing a build failure.
>
> a9769a5b9878 ("rv: Add support for LTL monitors") which was merged a few weeks
> ago added a usage of task_newtask:
>
> static void handle_task_newtask(void *data, struct task_struct *task, unsigned long flags)
>
> But commit edd3cb05c00a ("copy_process: pass clone_flags as u64 across
> calltree") from this pull request modified the signature without updating rv.
>
> ./include/rv/ltl_monitor.h: In function ‘ltl_monitor_init’:
> ./include/rv/ltl_monitor.h:75:51: error: passing argument 1 of ‘check_trace_callback_type_task_newtask’ from incompatible pointer type [-Wincompatible-pointer-types]
> 75 | rv_attach_trace_probe(name, task_newtask, handle_task_newtask);
> | ^~~~~~~~~~~~~~~~~~~
> | |
> | void (*)(void *, struct task_struct *, long unsigned int)
> ./include/rv/instrumentation.h:18:48: note: in definition of macro ‘rv_attach_trace_probe’
> 18 | check_trace_callback_type_##tp(rv_handler); \
> | ^~~~~~~~~~
>
> I've fixed it up by simply:
>
> diff --git a/include/rv/ltl_monitor.h b/include/rv/ltl_monitor.h
> index 67031a774e3d3..5368cf5fd623e 100644
> --- a/include/rv/ltl_monitor.h
> +++ b/include/rv/ltl_monitor.h
> @@ -56,7 +56,7 @@ static void ltl_task_init(struct task_struct *task, bool task_creation)
> ltl_atoms_fetch(task, mon);
> }
> -static void handle_task_newtask(void *data, struct task_struct *task, unsigned long flags)
> +static void handle_task_newtask(void *data, struct task_struct *task, u64 flags)
> {
> ltl_task_init(task, true);
> }
Hm, thanks! That is only in -next, I guess. I probably didn't catch this
because I didn't have CONFIG_RV_REACTORS turn on (whatever that is).
@Linus please let me know if you want me to resend this pull request or
if you just want to apply this fixup directly. Thank you!
Christian
Hey Linus,
/* Summary */
This contains the change to enable afs to support RENAME_NOREPLACE and
RENAME_EXCHANGE if the server supports it.
/* Testing */
gcc (Debian 14.2.0-19) 14.2.0
Debian clang version 19.1.7 (3+b1)
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 8f5ae30d69d7543eee0d70083daf4de8fe15d585:
Linux 6.17-rc1 (2025-08-10 19:41:16 +0300)
are available in the Git repository at:
git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/vfs-6.18-rc1.afs
for you to fetch changes up to a19239ba14525c26ad097d59fd52cd9198b5bcdb:
afs: Add support for RENAME_NOREPLACE and RENAME_EXCHANGE (2025-09-25 09:19:07 +0200)
Please consider pulling these changes from the signed vfs-6.18-rc1.afs tag.
Thanks!
Christian
----------------------------------------------------------------
vfs-6.18-rc1.afs
----------------------------------------------------------------
David Howells (1):
afs: Add support for RENAME_NOREPLACE and RENAME_EXCHANGE
fs/afs/dir.c | 223 +++++++++++++++++++++++++++++++---------
fs/afs/dir_edit.c | 18 ++--
fs/afs/dir_silly.c | 11 ++
fs/afs/internal.h | 15 ++-
fs/afs/misc.c | 1 +
fs/afs/protocol_yfs.h | 3 +
fs/afs/rotate.c | 17 +++-
fs/afs/yfsclient.c | 249 +++++++++++++++++++++++++++++++++++++++++++++
fs/dcache.c | 1 +
include/trace/events/afs.h | 6 ++
10 files changed, 480 insertions(+), 64 deletions(-)
The pull request you sent on Fri, 26 Sep 2025 16:19:03 +0200: > git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/vfs-6.18-rc1.afs has been merged into torvalds/linux.git: https://git.kernel.org/torvalds/c/5484a4ea7a1f208b886b58dd55cc55f418930f8a Thank you! -- Deet-doot-dot, I am a bot. https://korg.docs.kernel.org/prtracker.html
Hey Linus,
/* Summary */
This contains work adressing lockups reported by users when a systemd
unit reading lots of files from a filesystem mounted with the lazytime
mount option exits.
With the lazytime mount option enabled we can be switching many dirty
inodes on cgroup exit to the parent cgroup. The numbers observed in
practice when systemd slice of a large cron job exits can easily reach
hundreds of thousands or millions.
The logic in inode_do_switch_wbs() which sorts the inode into
appropriate place in b_dirty list of the target wb however has linear
complexity in the number of dirty inodes thus overall time complexity of
switching all the inodes is quadratic leading to workers being pegged
for hours consuming 100% of the CPU and switching inodes to the parent wb.
Simple reproducer of the issue:
FILES=10000
# Filesystem mounted with lazytime mount option
MNT=/mnt/
echo "Creating files and switching timestamps"
for (( j = 0; j < 50; j ++ )); do
mkdir $MNT/dir$j
for (( i = 0; i < $FILES; i++ )); do
echo "foo" >$MNT/dir$j/file$i
done
touch -a -t 202501010000 $MNT/dir$j/file*
done
wait
echo "Syncing and flushing"
sync
echo 3 >/proc/sys/vm/drop_caches
echo "Reading all files from a cgroup"
mkdir /sys/fs/cgroup/unified/mycg1 || exit
echo $$ >/sys/fs/cgroup/unified/mycg1/cgroup.procs || exit
for (( j = 0; j < 50; j ++ )); do
cat /mnt/dir$j/file* >/dev/null &
done
wait
echo "Switching wbs"
# Now rmdir the cgroup after the script exits
This can be solved by:
* Avoiding contention on the wb->list_lock when switching inodes by
running a single work item per wb and managing a queue of items
switching to the wb.
* Allow rescheduling when switching inodes over to a different cgroup to
avoid softlockups.
* Maintain b_dirty list ordering instead of sorting it.
/* Testing */
gcc (Debian 14.2.0-19) 14.2.0
Debian clang version 19.1.7 (3+b1)
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 8f5ae30d69d7543eee0d70083daf4de8fe15d585:
Linux 6.17-rc1 (2025-08-10 19:41:16 +0300)
are available in the Git repository at:
git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/vfs-6.18-rc1.writeback
for you to fetch changes up to 9426414f0d42f824892ecd4dccfebf8987084a41:
Merge patch series "writeback: Avoid lockups when switching inodes" (2025-09-19 13:11:06 +0200)
Please consider pulling these changes from the signed vfs-6.18-rc1.writeback tag.
Thanks!
Christian
----------------------------------------------------------------
vfs-6.18-rc1.writeback
----------------------------------------------------------------
Christian Brauner (1):
Merge patch series "writeback: Avoid lockups when switching inodes"
Jan Kara (4):
writeback: Avoid contention on wb->list_lock when switching inodes
writeback: Avoid softlockup when switching many inodes
writeback: Avoid excessively long inode switching times
writeback: Add tracepoint to track pending inode switches
fs/fs-writeback.c | 133 +++++++++++++++++++++++++--------------
include/linux/backing-dev-defs.h | 4 ++
include/linux/writeback.h | 2 +
include/trace/events/writeback.h | 29 +++++++++
mm/backing-dev.c | 5 ++
5 files changed, 126 insertions(+), 47 deletions(-)
The pull request you sent on Fri, 26 Sep 2025 16:19:05 +0200: > git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/vfs-6.18-rc1.writeback has been merged into torvalds/linux.git: https://git.kernel.org/torvalds/c/263e777ee3e00d628ac2660f68c82aeab14707b3 Thank you! -- Deet-doot-dot, I am a bot. https://korg.docs.kernel.org/prtracker.html
Hey Linus,
/* Summary */
This contains further preparatory changes for the asynchronous directory
locking scheme:
* Add lookup_one_positive_killable() which allows overlayfs to perform
lookup that won't block on a fatal signal.
* Unify the mount idmap handling in struct renamedata as a rename can
only happen within a single mount.
* Introduce kern_path_parent() for audit which sets the path to the
parent and returns a dentry for the target without holding any locks
on return.
* Rename kern_path_locked() as it is only used to prepare for the
removal of an object from the filesystem:
kern_path_locked() => start_removing_path()
kern_path_create() => start_creating_path()
user_path_create() => start_creating_user_path()
user_path_locked_at() => start_removing_user_path_at()
done_path_create() => end_creating_path()
NA => end_removing_path()
/* Testing */
gcc (Debian 14.2.0-19) 14.2.0
Debian clang version 19.1.7 (3+b1)
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/aNOyrz1bd1WTrZgc@finisterre.sirena.org.uk
[2] https://lore.kernel.org/linux-next/aNU3FtEZ3w_NcYwI@sirena.org.uk
The following changes since commit 8f5ae30d69d7543eee0d70083daf4de8fe15d585:
Linux 6.17-rc1 (2025-08-10 19:41:16 +0300)
are available in the Git repository at:
git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/vfs-6.18-rc1.async
for you to fetch changes up to 4f5ea5aa0dcdd3c7487fbabad5b86b3cd7d2b8c4:
Merge patch series "vfs: preparatory changes to centralize locking of create/remove/rename" (2025-09-23 12:37:42 +0200)
Please consider pulling these changes from the signed vfs-6.18-rc1.async tag.
Thanks!
Christian
----------------------------------------------------------------
vfs-6.18-rc1.async
----------------------------------------------------------------
Christian Brauner (1):
Merge patch series "vfs: preparatory changes to centralize locking of create/remove/rename"
NeilBrown (6):
VFS/ovl: add lookup_one_positive_killable()
VFS: discard err2 in filename_create()
VFS: unify old_mnt_idmap and new_mnt_idmap in renamedata
VFS/audit: introduce kern_path_parent() for audit
VFS: rename kern_path_locked() and related functions.
debugfs: rename start_creating() to debugfs_start_creating()
Documentation/filesystems/porting.rst | 12 ++
arch/powerpc/platforms/cell/spufs/syscalls.c | 4 +-
drivers/base/devtmpfs.c | 22 ++--
fs/bcachefs/fs-ioctl.c | 10 +-
fs/cachefiles/namei.c | 3 +-
fs/debugfs/inode.c | 11 +-
fs/ecryptfs/inode.c | 3 +-
fs/init.c | 17 +--
fs/namei.c | 164 ++++++++++++++++++++-------
fs/nfsd/vfs.c | 3 +-
fs/ocfs2/refcounttree.c | 4 +-
fs/overlayfs/overlayfs.h | 3 +-
fs/overlayfs/readdir.c | 28 ++---
fs/smb/server/vfs.c | 11 +-
include/linux/fs.h | 6 +-
include/linux/namei.h | 21 ++--
kernel/audit_fsnotify.c | 11 +-
kernel/audit_watch.c | 3 +-
kernel/bpf/inode.c | 4 +-
net/unix/af_unix.c | 6 +-
20 files changed, 216 insertions(+), 130 deletions(-)
The pull request you sent on Fri, 26 Sep 2025 16:19:06 +0200: > git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/vfs-6.18-rc1.async has been merged into torvalds/linux.git: https://git.kernel.org/torvalds/c/449c2b302c8e200558619821ced46cc13cdb9aa6 Thank you! -- Deet-doot-dot, I am a bot. https://korg.docs.kernel.org/prtracker.html
© 2016 - 2025 Red Hat, Inc.