[GIT PULL 00/12 for v6.18] vfs 6.18

Christian Brauner posted 12 patches 5 days, 7 hours ago
Only 1 patches received!
[GIT PULL 00/12 for v6.18] vfs 6.18
Posted by Christian Brauner 5 days, 7 hours ago
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
[GIT PULL 01/12 for v6.18] misc
Posted by Christian Brauner 5 days, 7 hours ago
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
Re: [GIT PULL 01/12 for v6.18] misc
Posted by pr-tracker-bot@kernel.org 2 days, 2 hours ago
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
Re: [GIT PULL 01/12 for v6.18] misc
Posted by Christian Brauner 2 days, 11 hours ago
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!
[GIT PULL 02/12 for v6.18] mount
Posted by Christian Brauner 5 days, 7 hours ago
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
Re: [GIT PULL 02/12 for v6.18] mount
Posted by pr-tracker-bot@kernel.org 2 days, 2 hours ago
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
[GIT PULL 03/12 for v6.18] inode
Posted by Christian Brauner 5 days, 7 hours ago
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(-)
Re: [GIT PULL 03/12 for v6.18] inode
Posted by pr-tracker-bot@kernel.org 2 days, 2 hours ago
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
[GIT PULL 04/12 for v6.18] iomap
Posted by Christian Brauner 5 days, 7 hours ago
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(-)
Re: [GIT PULL 04/12 for v6.18] iomap
Posted by pr-tracker-bot@kernel.org 2 days, 2 hours ago
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
[GIT PULL 05/12 for v6.18] pidfs
Posted by Christian Brauner 5 days, 7 hours ago
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(-)
Re: [GIT PULL 05/12 for v6.18] pidfs
Posted by Oleg Nesterov 7 hours ago
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.
Re: [GIT PULL 05/12 for v6.18] pidfs
Posted by pr-tracker-bot@kernel.org 2 days, 2 hours ago
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
[GIT PULL 06/12 for v6.18] rust
Posted by Christian Brauner 5 days, 7 hours ago
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(-)
Re: [GIT PULL 06/12 for v6.18] rust
Posted by pr-tracker-bot@kernel.org 2 days, 2 hours ago
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
[GIT PULL 07/12 for v6.18] workqueue
Posted by Christian Brauner 5 days, 7 hours ago
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(-)
Re: [GIT PULL 07/12 for v6.18] workqueue
Posted by pr-tracker-bot@kernel.org 2 days, 2 hours ago
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
[GIT PULL 08/12 for v6.18] core kernel
Posted by Christian Brauner 5 days, 7 hours ago
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(-)
Re: [GIT PULL 08/12 for v6.18] core kernel
Posted by pr-tracker-bot@kernel.org 2 days, 2 hours ago
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
Re: [GIT PULL 08/12 for v6.18] core kernel
Posted by Sasha Levin 4 days, 9 hours ago
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
Re: [GIT PULL 08/12 for v6.18] core kernel
Posted by Christian Brauner 2 days, 11 hours ago
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
[GIT PULL 9/12 for v6.18] afs
Posted by Christian Brauner 5 days, 7 hours ago
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(-)
Re: [GIT PULL 9/12 for v6.18] afs
Posted by pr-tracker-bot@kernel.org 2 days, 2 hours ago
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
[GIT PULL 11/12 for v6.18] writeback
Posted by Christian Brauner 5 days, 7 hours ago
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(-)
Re: [GIT PULL 11/12 for v6.18] writeback
Posted by pr-tracker-bot@kernel.org 2 days, 2 hours ago
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
[GIT PULL 12/12 for v6.18] async directory preliminaries
Posted by Christian Brauner 5 days, 7 hours ago
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(-)
Re: [GIT PULL 12/12 for v6.18] async directory preliminaries
Posted by pr-tracker-bot@kernel.org 2 days, 2 hours ago
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