[GIT PULL 00/17 for v6.19] v6.19

Christian Brauner posted 17 patches 3 days, 4 hours ago
Only 6 patches received!
[GIT PULL 00/17 for v6.19] v6.19
Posted by Christian Brauner 3 days, 4 hours ago
Hey Linus,

This is the batch of pull requests for the v6.19 merge window!

We have a couple of inter-dependencies between branches. Notably the
cred guard work and the directory locking work are a prerequisite for
the overlayfs work for this cycle.

We also have an external dependency on the kbuild tree's work to enable
-fms-extension. So pulling the vfs work before the kbuild work will
bring that in. Which is fine. I'm just making sure you're aware of it.

This cycle was quite busy with a lot of infrastructure work and cleanups.

There is the new listns() system call that allows userspace to iterate
through namespaces in the system. Currently there's no direct way to
enumerate namespaces - applications must scan /proc/<pid>/ns/ across all
processes, which is inefficient, incomplete (misses namespaces kept
alive only by file descriptors or bind mounts), and requires broad /proc
access. The new system call supports pagination, filtering by namespace
type, and filtering by owning user namespace.

To support listns() and future namespace work, we've introduced an
active reference count that tracks namespace visibility to userspace. A
namespace is visible when it's in use by a task, persisted through a VFS
object, or is the parent of child namespaces. This prevents resurrection
of namespaces that are pinned only for internal kernel reasons.

There's the credential guard infrastructure change for this cycle that
you triggered. :) We now have with_kernel_creds() and
scoped_with_kernel_creds() guards that allow using kernel credentials
without allocating and copying them. We also have scoped_with_creds()
for the common override_creds()/revert_creds() pattern, and prepare
credential guards for more complex cases. All of overlayfs has been
converted to use these guards.

The inode state accessor work from last cycle continues. We now hide
inode->i_state behind accessors entirely, making plain access fail to
compile. This allows asserting correct usage - locking, flag
manipulation, detecting when code clears already-missing flags or sets
flags when illegal.

Directory operations are getting centralized locking helpers as part of
NeilBrown's effort to eventually allow multiple concurrent operations in
a directory by locking target dentries rather than whole parent
directories.

We now also have recall-only directory delegations for knfsd.

The iomap work includes FUSE support for buffered reads using iomap,
enabling granular uptodate tracking with large folios. There's also zero
range folio batch support to handle dirty folios over unwritten
mappings, and DIO write completions can now run from interrupt context
again for pure overwrites, reducing context switches for
high-performance workloads.

The FD_ADD() and FD_PREPARE() primitives simplify the ubiquitous pattern
of get_unused_fd_flags() + create file + fd_install() that currently
requires cumbersome cleanup paths. The series removes roughly double the
code it adds by eliminating convoluted cleanup logic across many
subsystems. This work came late in the cycle but is quite nice - an
alternative pull request with only trivial filesystem conversions is
available if preferred. The KVM conversions were reverted as they prefer
to take those through their tree.

Note that I provided two pull requests for FD_{ADD,PREPARE}():

(1) [GIT PULL 16/17 for v6.19] vfs fd prepare
    Message-Id: <20251128-vfs-fd-prepare-v619-e23be0b7a0c5@brauner>
    contains everything I sent out and a few later fixes and with a
    revert of the kvm conversions. The kvm maintainers want to take it
    to their tree apparently.

(2) [GIT PULL 17/17 for v6.19] vfs fd prepare minimal
    Message-Id: <20251128-vfs-fd-prepare-minimal-v619-41df48e056e7@brauner>
    contains a condensed version with anything that's complex removed.

I think (1) is fine but I understand wanting to be a bit more
conservative so I also provided (2).

There's the usual collection of cleanups: writeback interface
simplification removing low-level filemap_* interfaces, path lookup
optimizations with cheaper MAY_EXEC handling, step_into()/walk_component()
inlining, and the start of splitting up the monolithic fs.h header into
focused headers for superblock code.

Smaller items include folio_next_pos() helper fixing a 32-bit ocfs2 bug,
minix filesystem syzbot fixes, autofs fix for futile mount triggers in
private mount namespaces, and coredump/pidfd improvements exposing the
coredump signal.

Thanks!
Christian
[GIT PULL 01/17 for v6.19] vfs iomap
Posted by Christian Brauner 3 days, 4 hours ago
Hey Linus,

/* Summary */
This contains the iomap changes for this cycle:

* FUSE iomap Support for Buffered Reads

  This adds iomap support for FUSE buffered reads and readahead. This
  enables granular uptodate tracking with large folios so only
  non-uptodate portions need to be read. Also fixes a race condition
  with large folios + writeback cache that could cause data corruption
  on partial writes followed by reads.

  - Refactored iomap read/readahead bio logic into helpers
  - Added caller-provided callbacks for read operations
  - Moved buffered IO bio logic into new file
  - FUSE now uses iomap for read_folio and readahead

* Zero Range Folio Batch Support

  Adds folio batch support for iomap_zero_range() to handle dirty folios
  over unwritten mappings. Fixes raciness issues where dirty data could
  be lost during zero range operations.

  - filemap_get_folios_tag_range() helper for dirty folio lookup
  - Optional zero range dirty folio processing
  - XFS fills dirty folios on zero range of unwritten mappings
  - Removed old partial EOF zeroing optimization

* DIO Write Completions from Interrupt Context

  Restore pre-iomap behavior where pure overwrite completions run inline
  rather than being deferred to workqueue. Reduces context switches for
  high-performance workloads like ScyllaDB.

  - Removed unused IOCB_DIO_CALLER_COMP code
  - Error completions always run in user context (fixes zonefs)
  - Reworked REQ_FUA selection logic
  - Inverted IOMAP_DIO_INLINE_COMP to IOMAP_DIO_OFFLOAD_COMP

* Buffered IO Cleanups

  Some performance and code clarity improvements:

  - Replace manual bitmap scanning with find_next_bit()
  - Simplify read skip logic for writes
  - Optimize pending async writeback accounting
  - Better variable naming
  - Documentation for iomap_finish_folio_write() requirements

* Misaligned Vectors for Zoned XFS

  Enables sub-block aligned vectors in XFS always-COW mode for zoned
  devices via new IOMAP_DIO_FSBLOCK_ALIGNED flag.

* Bug Fixes

  - Allocate s_dio_done_wq for async reads (fixes syzbot report after error completion changes)
  - Fix iomap_read_end() for already uptodate folios (regression fix)

/* 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/20251117143259.05d36122@canb.auug.org.au

The following changes since commit 3a8660878839faadb4f1a6dd72c3179c1df56787:

  Linux 6.18-rc1 (2025-10-12 13:42:36 -0700)

are available in the Git repository at:

  git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/vfs-6.19-rc1.iomap

for you to fetch changes up to 7fd8720dff2d9c70cf5a1a13b7513af01952ec02:

  iomap: allocate s_dio_done_wq for async reads as well (2025-11-25 10:22:19 +0100)

Please consider pulling these changes from the signed vfs-6.19-rc1.iomap tag.

Thanks!
Christian

----------------------------------------------------------------
vfs-6.19-rc1.iomap

----------------------------------------------------------------
Brian Foster (7):
      filemap: add helper to look up dirty folios in a range
      iomap: remove pos+len BUG_ON() to after folio lookup
      iomap: optional zero range dirty folio processing
      xfs: always trim mapping to requested range for zero range
      xfs: fill dirty folios on zero range of unwritten mappings
      iomap: remove old partial eof zeroing optimization
      xfs: error tag to force zeroing on debug kernels

Christian Brauner (5):
      Merge patch series "fuse: use iomap for buffered reads + readahead"
      Merge patch series "iomap: zero range folio batch support"
      Merge patch series "alloc misaligned vectors for zoned XFS v2"
      Merge patch series "iomap: buffered io changes"
      Merge patch series "enable iomap dio write completions from interrupt context v2"

Christoph Hellwig (8):
      iomap: move buffered io bio logic into new file
      xfs: support sub-block aligned vectors in always COW mode
      fs, iomap: remove IOCB_DIO_CALLER_COMP
      iomap: always run error completions in user context
      iomap: rework REQ_FUA selection
      iomap: support write completions from interrupt context
      iomap: invert the polarity of IOMAP_DIO_INLINE_COMP
      iomap: allocate s_dio_done_wq for async reads as well

Joanne Koong (24):
      iomap: move bio read logic into helper function
      iomap: move read/readahead bio submission logic into helper function
      iomap: simplify iomap_iter_advance()
      iomap: store read/readahead bio generically
      iomap: adjust read range correctly for non-block-aligned positions
      iomap: iterate over folio mapping in iomap_readpage_iter()
      iomap: rename iomap_readpage_iter() to iomap_read_folio_iter()
      iomap: rename iomap_readpage_ctx struct to iomap_read_folio_ctx
      iomap: track pending read bytes more optimally
      iomap: set accurate iter->pos when reading folio ranges
      iomap: add caller-provided callbacks for read and readahead
      iomap: make iomap_read_folio() a void return
      fuse: use iomap for read_folio
      fuse: use iomap for readahead
      fuse: remove fc->blkbits workaround for partial writes
      iomap: rename bytes_pending/bytes_accounted to bytes_submitted/bytes_not_submitted
      iomap: account for unaligned end offsets when truncating read range
      docs: document iomap writeback's iomap_finish_folio_write() requirement
      iomap: optimize pending async writeback accounting
      iomap: simplify ->read_folio_range() error handling for reads
      iomap: simplify when reads can be skipped for writes
      iomap: use find_next_bit() for dirty bitmap scanning
      iomap: use find_next_bit() for uptodate bitmap scanning
      iomap: fix iomap_read_end() for already uptodate folios

Qu Wenruo (1):
      iomap: add IOMAP_DIO_FSBLOCK_ALIGNED flag

 Documentation/filesystems/iomap/operations.rst |  50 +-
 block/fops.c                                   |   5 +-
 fs/backing-file.c                              |   6 -
 fs/dax.c                                       |  30 +-
 fs/erofs/data.c                                |   5 +-
 fs/fuse/dir.c                                  |   2 +-
 fs/fuse/file.c                                 | 286 ++++++-----
 fs/fuse/fuse_i.h                               |   8 -
 fs/fuse/inode.c                                |  13 +-
 fs/gfs2/aops.c                                 |   6 +-
 fs/iomap/Makefile                              |   3 +-
 fs/iomap/bio.c                                 |  88 ++++
 fs/iomap/buffered-io.c                         | 636 +++++++++++++++----------
 fs/iomap/direct-io.c                           | 230 +++++----
 fs/iomap/internal.h                            |  12 +
 fs/iomap/ioend.c                               |   2 -
 fs/iomap/iter.c                                |  20 +-
 fs/iomap/seek.c                                |   8 +-
 fs/iomap/trace.h                               |   7 +-
 fs/xfs/libxfs/xfs_errortag.h                   |   6 +-
 fs/xfs/xfs_aops.c                              |   5 +-
 fs/xfs/xfs_file.c                              |  50 +-
 fs/xfs/xfs_iomap.c                             |  38 +-
 fs/zonefs/file.c                               |   5 +-
 include/linux/fs.h                             |  43 +-
 include/linux/iomap.h                          |  86 +++-
 include/linux/pagemap.h                        |   2 +
 io_uring/rw.c                                  |  16 +-
 mm/filemap.c                                   |  58 +++
 29 files changed, 1093 insertions(+), 633 deletions(-)
 create mode 100644 fs/iomap/bio.c
[GIT PULL 02/17 for v6.19] vfs misc
Posted by Christian Brauner 3 days, 4 hours ago
Hey Linus,

/* Summary */
This contains the usually miscellaneous vfs changes:

Note that this has the kbuild -fms-extensions support merged in as the
pipe changes depends on it.

Features

- Cheaper MAY_EXEC handling for path lookup. This elides MAY_WRITE
  permission checks during path lookup and adds the IOP_FASTPERM_MAY_EXEC
  flag so filesystems like btrfs can avoid expensive permission work.

- Hide dentry_cache behind runtime const machinery.

- Add German Maglione as virtiofs co-maintainer.

Cleanups

- Tidy up and inline step_into() and walk_component() for improved code
  generation.

- Re-enable IOCB_NOWAIT writes to files. This refactors file timestamp
  update logic, fixing a layering bypass in btrfs when updating timestamps
  on device files and improving FMODE_NOCMTIME handling in VFS now that
  nfsd started using it.

- Path lookup optimizations extracting slowpaths into dedicated routines
  and adding branch prediction hints for mntput_no_expire(), fd_install(),
  lookup_slow(), and various other hot paths.

- Enable clang's -fms-extensions flag, requiring a JFS rename to avoid
  conflicts.

- Remove spurious exports in fs/file_attr.c.

- Stop duplicating union pipe_index declaration. This depends on the
  shared kbuild branch that brings in -fms-extensions support which is
  merged into this branch.

- Use MD5 library instead of crypto_shash in ecryptfs.

- Use largest_zero_folio() in iomap_dio_zero().

- Replace simple_strtol/strtoul with kstrtoint/kstrtouint in init and
  initrd code.

- Various typo fixes.

Fixes

- Fix emergency sync for btrfs. Btrfs requires an explicit sync_fs() call
  with wait == 1 to commit super blocks. The emergency sync path never
  passed this, leaving btrfs data uncommitted during emergency sync.

- Use local kmap in watch_queue's post_one_notification().

- Add hint prints in sb_set_blocksize() for LBS dependency on THP.

/* 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
================================

The following changes since commit dcb6fa37fd7bc9c3d2b066329b0d27dedf8becaa:

  Linux 6.18-rc3 (2025-10-26 15:59:49 -0700)

are available in the Git repository at:

  git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/vfs-6.19-rc1.misc

for you to fetch changes up to ebf8538979101ef879742dcfaf04b684f5461e12:

  MAINTAINERS: add German Maglione as virtiofs co-maintainer (2025-11-27 10:00:09 +0100)

Please consider pulling these changes from the signed vfs-6.19-rc1.misc tag.

Thanks!
Christian

----------------------------------------------------------------
vfs-6.19-rc1.misc

----------------------------------------------------------------
Askar Safin (2):
      fs/splice.c: trivial fix: pipes -> pipe's
      include/linux/fs.h: trivial fix: regualr -> regular

Baokun Li (1):
      bdev: add hint prints in sb_set_blocksize() for LBS dependency on THP

Christian Brauner (6):
      Merge patch series "fs: fully sync all fsese even for an emergency sync"
      Merge patch "kbuild: Add '-fms-extensions' to areas with dedicated CFLAGS"
      Merge branch 'kbuild-6.19.fms.extension'
      Merge patch series "cheaper MAY_EXEC handling for path lookup"
      Merge patch series "re-enable IOCB_NOWAIT writes to files v2"
      Merge patch series "fs: tidy up step_into() & friends before inlining"

Christoph Hellwig (7):
      fs: remove spurious exports in fs/file_attr.c
      fs: refactor file timestamp update logic
      fs: lift the FMODE_NOCMTIME check into file_update_time_flags
      fs: export vfs_utimes
      btrfs: use vfs_utimes to update file timestamps
      btrfs: fix the comment on btrfs_update_time
      orangefs: use inode_update_timestamps directly

Davidlohr Bueso (1):
      watch_queue: Use local kmap in post_one_notification()

Eric Biggers (1):
      ecryptfs: Use MD5 library instead of crypto_shash

Kaushlendra Kumar (1):
      init: Replace simple_strtoul() with kstrtouint() in root_delay_setup()

Mateusz Guzik (13):
      fs: touch up predicts in putname()
      fs: speed up path lookup with cheaper handling of MAY_EXEC
      btrfs: utilize IOP_FASTPERM_MAY_EXEC
      fs: retire now stale MAY_WRITE predicts in inode_permission()
      fs: touch predicts in do_dentry_open()
      fs: hide dentry_cache behind runtime const machinery
      fs: move fd_install() slowpath into a dedicated routine and provide commentary
      fs: touch up predicts in path lookup
      fs: move mntput_no_expire() slowpath into a dedicated routine
      fs: add predicts based on nd->depth
      fs: mark lookup_slow() as noinline
      fs: tidy up step_into() & friends before inlining
      fs: inline step_into() and walk_component()

Nathan Chancellor (2):
      jfs: Rename _inline to avoid conflict with clang's '-fms-extensions'
      kbuild: Add '-fms-extensions' to areas with dedicated CFLAGS

Pankaj Raghav (1):
      iomap: use largest_zero_folio() in iomap_dio_zero()

Qu Wenruo (2):
      fs: do not pass a parameter for sync_inodes_one_sb()
      fs: fully sync all fses even for an emergency sync

Rasmus Villemoes (2):
      Kbuild: enable -fms-extensions
      fs/pipe: stop duplicating union pipe_index declaration

Stefan Hajnoczi (1):
      MAINTAINERS: add German Maglione as virtiofs co-maintainer

Thorsten Blum (1):
      initrd: Replace simple_strtol with kstrtoint to improve ramdisk_start_setup

 MAINTAINERS                           |   1 +
 Makefile                              |   3 +
 arch/arm64/kernel/vdso32/Makefile     |   3 +-
 arch/loongarch/vdso/Makefile          |   2 +-
 arch/parisc/boot/compressed/Makefile  |   2 +-
 arch/powerpc/boot/Makefile            |   3 +-
 arch/s390/Makefile                    |   3 +-
 arch/s390/purgatory/Makefile          |   3 +-
 arch/x86/Makefile                     |   4 +-
 arch/x86/boot/compressed/Makefile     |   7 +-
 block/bdev.c                          |  19 ++++-
 drivers/firmware/efi/libstub/Makefile |   4 +-
 fs/btrfs/inode.c                      |  16 +++-
 fs/btrfs/volumes.c                    |  11 +--
 fs/dcache.c                           |   6 +-
 fs/ecryptfs/Kconfig                   |   2 +-
 fs/ecryptfs/crypto.c                  |  90 +++------------------
 fs/ecryptfs/ecryptfs_kernel.h         |  13 +---
 fs/ecryptfs/inode.c                   |   7 +-
 fs/ecryptfs/keystore.c                |  65 +++-------------
 fs/ecryptfs/main.c                    |   7 ++
 fs/ecryptfs/super.c                   |   5 +-
 fs/file.c                             |  35 +++++++--
 fs/file_attr.c                        |   4 -
 fs/inode.c                            |  58 +++++---------
 fs/iomap/direct-io.c                  |  38 ++++-----
 fs/jfs/jfs_incore.h                   |   6 +-
 fs/namei.c                            | 142 +++++++++++++++++++++++++---------
 fs/namespace.c                        |  38 +++++----
 fs/open.c                             |   6 +-
 fs/orangefs/inode.c                   |   4 +-
 fs/splice.c                           |   2 +-
 fs/sync.c                             |   7 +-
 fs/utimes.c                           |   1 +
 include/asm-generic/vmlinux.lds.h     |   3 +-
 include/linux/fs.h                    |  15 ++--
 include/linux/pipe_fs_i.h             |  23 ++----
 init/do_mounts.c                      |   3 +-
 init/do_mounts_rd.c                   |   3 +-
 kernel/watch_queue.c                  |   4 +-
 scripts/Makefile.extrawarn            |   4 +-
 41 files changed, 329 insertions(+), 343 deletions(-)
[GIT PULL 03/17 for v6.19] vfs inode
Posted by Christian Brauner 3 days, 4 hours ago
Hey Linus,

/* Summary */
This contains inode specific changes for this cycle:

Features

- Hide inode->i_state behind accessors. Open-coded accesses prevent
  asserting they are done correctly. One obvious aspect is locking, but
  significantly more can be checked. For example it can be detected when
  the code is clearing flags which are already missing, or is setting
  flags when it is illegal (e.g., I_FREEING when ->i_count > 0).

- Provide accessors for ->i_state, converts all filesystems using coccinelle
  and manual conversions (btrfs, ceph, smb, f2fs, gfs2, overlayfs, nilfs2,
  xfs), and makes plain ->i_state access fail to compile.

- Rework I_NEW handling to operate without fences, simplifying the code
  after the accessor infrastructure is in place.

Cleanups

- Move wait_on_inode() from writeback.h to fs.h.

- Spell out fenced ->i_state accesses with explicit smp_wmb/smp_rmb
  for clarity.

- Cosmetic fixes to LRU handling.

- Push list presence check into inode_io_list_del().

- Touch up predicts in __d_lookup_rcu().

- ocfs2: retire ocfs2_drop_inode() and I_WILL_FREE usage.

- Assert on ->i_count in iput_final().

- Assert ->i_lock held in __iget().

Fixes

- Add missing fences to I_NEW handling.

/* 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
================================

The following changes since commit 3a8660878839faadb4f1a6dd72c3179c1df56787:

  Linux 6.18-rc1 (2025-10-12 13:42:36 -0700)

are available in the Git repository at:

  git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/vfs-6.19-rc1.inode

for you to fetch changes up to ca0d620b0afae20a7bcd5182606eba6860b2dbf2:

  dcache: touch up predicts in __d_lookup_rcu() (2025-11-28 10:31:45 +0100)

Please consider pulling these changes from the signed vfs-6.19-rc1.inode tag.

Thanks!
Christian

----------------------------------------------------------------
vfs-6.19-rc1.inode

----------------------------------------------------------------
Christian Brauner (1):
      Merge patch series "hide ->i_state behind accessors"

Mateusz Guzik (22):
      fs: assert ->i_lock held in __iget()
      fs: assert on ->i_count in iput_final()
      ocfs2: retire ocfs2_drop_inode() and I_WILL_FREE usage
      fs: add missing fences to I_NEW handling
      fs: move wait_on_inode() from writeback.h to fs.h
      fs: spell out fenced ->i_state accesses with explicit smp_wmb/smp_rmb
      fs: provide accessors for ->i_state
      Coccinelle-based conversion to use ->i_state accessors
      Manual conversion to use ->i_state accessors of all places not covered by coccinelle
      btrfs: use the new ->i_state accessors
      ceph: use the new ->i_state accessors
      smb: use the new ->i_state accessors
      f2fs: use the new ->i_state accessors
      gfs2: use the new ->i_state accessors
      overlayfs: use the new ->i_state accessors
      nilfs2: use the new ->i_state accessors
      xfs: use the new ->i_state accessors
      fs: make plain ->i_state access fail to compile
      fs: rework I_NEW handling to operate without fences
      fs: cosmetic fixes to lru handling
      fs: push list presence check into inode_io_list_del()
      dcache: touch up predicts in __d_lookup_rcu()

 Documentation/filesystems/porting.rst |   2 +-
 block/bdev.c                          |   4 +-
 drivers/dax/super.c                   |   2 +-
 fs/9p/vfs_inode.c                     |   2 +-
 fs/9p/vfs_inode_dotl.c                |   2 +-
 fs/affs/inode.c                       |   2 +-
 fs/afs/dir.c                          |   4 +-
 fs/afs/dynroot.c                      |   6 +-
 fs/afs/inode.c                        |   8 +-
 fs/befs/linuxvfs.c                    |   2 +-
 fs/bfs/inode.c                        |   2 +-
 fs/btrfs/inode.c                      |  10 +-
 fs/buffer.c                           |   4 +-
 fs/ceph/cache.c                       |   2 +-
 fs/ceph/crypto.c                      |   4 +-
 fs/ceph/file.c                        |   4 +-
 fs/ceph/inode.c                       |  28 ++--
 fs/coda/cnode.c                       |   4 +-
 fs/cramfs/inode.c                     |   2 +-
 fs/crypto/keyring.c                   |   2 +-
 fs/crypto/keysetup.c                  |   2 +-
 fs/dcache.c                           |  29 ++--
 fs/drop_caches.c                      |   2 +-
 fs/ecryptfs/inode.c                   |   6 +-
 fs/efs/inode.c                        |   2 +-
 fs/erofs/inode.c                      |   2 +-
 fs/ext2/inode.c                       |   2 +-
 fs/ext4/inode.c                       |  13 +-
 fs/ext4/orphan.c                      |   4 +-
 fs/f2fs/data.c                        |   2 +-
 fs/f2fs/inode.c                       |   2 +-
 fs/f2fs/namei.c                       |   4 +-
 fs/f2fs/super.c                       |   2 +-
 fs/freevxfs/vxfs_inode.c              |   2 +-
 fs/fs-writeback.c                     | 132 +++++++++---------
 fs/fuse/inode.c                       |   4 +-
 fs/gfs2/file.c                        |   2 +-
 fs/gfs2/glock.c                       |   2 +-
 fs/gfs2/glops.c                       |   2 +-
 fs/gfs2/inode.c                       |   4 +-
 fs/gfs2/ops_fstype.c                  |   2 +-
 fs/hfs/btree.c                        |   2 +-
 fs/hfs/inode.c                        |   2 +-
 fs/hfsplus/super.c                    |   2 +-
 fs/hostfs/hostfs_kern.c               |   2 +-
 fs/hpfs/dir.c                         |   2 +-
 fs/hpfs/inode.c                       |   2 +-
 fs/inode.c                            | 247 +++++++++++++++++++---------------
 fs/isofs/inode.c                      |   2 +-
 fs/jffs2/fs.c                         |   4 +-
 fs/jfs/file.c                         |   4 +-
 fs/jfs/inode.c                        |   2 +-
 fs/jfs/jfs_txnmgr.c                   |   2 +-
 fs/kernfs/inode.c                     |   2 +-
 fs/libfs.c                            |   6 +-
 fs/minix/inode.c                      |   2 +-
 fs/namei.c                            |   8 +-
 fs/netfs/misc.c                       |   8 +-
 fs/netfs/read_single.c                |   6 +-
 fs/nfs/inode.c                        |   2 +-
 fs/nfs/pnfs.c                         |   2 +-
 fs/nfsd/vfs.c                         |   2 +-
 fs/nilfs2/cpfile.c                    |   2 +-
 fs/nilfs2/dat.c                       |   2 +-
 fs/nilfs2/ifile.c                     |   2 +-
 fs/nilfs2/inode.c                     |  10 +-
 fs/nilfs2/sufile.c                    |   2 +-
 fs/notify/fsnotify.c                  |   2 +-
 fs/ntfs3/inode.c                      |   2 +-
 fs/ocfs2/dlmglue.c                    |   2 +-
 fs/ocfs2/inode.c                      |  27 +---
 fs/ocfs2/inode.h                      |   1 -
 fs/ocfs2/ocfs2_trace.h                |   2 -
 fs/ocfs2/super.c                      |   2 +-
 fs/omfs/inode.c                       |   2 +-
 fs/openpromfs/inode.c                 |   2 +-
 fs/orangefs/inode.c                   |   2 +-
 fs/orangefs/orangefs-utils.c          |   6 +-
 fs/overlayfs/dir.c                    |   2 +-
 fs/overlayfs/inode.c                  |   6 +-
 fs/overlayfs/util.c                   |  10 +-
 fs/pipe.c                             |   2 +-
 fs/qnx4/inode.c                       |   2 +-
 fs/qnx6/inode.c                       |   2 +-
 fs/quota/dquot.c                      |   2 +-
 fs/romfs/super.c                      |   2 +-
 fs/smb/client/cifsfs.c                |   2 +-
 fs/smb/client/inode.c                 |  14 +-
 fs/squashfs/inode.c                   |   2 +-
 fs/sync.c                             |   2 +-
 fs/ubifs/file.c                       |   2 +-
 fs/ubifs/super.c                      |   2 +-
 fs/udf/inode.c                        |   2 +-
 fs/ufs/inode.c                        |   2 +-
 fs/xfs/scrub/common.c                 |   2 +-
 fs/xfs/scrub/inode_repair.c           |   2 +-
 fs/xfs/scrub/parent.c                 |   2 +-
 fs/xfs/xfs_bmap_util.c                |   2 +-
 fs/xfs/xfs_health.c                   |   4 +-
 fs/xfs/xfs_icache.c                   |   6 +-
 fs/xfs/xfs_inode.c                    |   6 +-
 fs/xfs/xfs_inode_item.c               |   4 +-
 fs/xfs/xfs_iops.c                     |   2 +-
 fs/xfs/xfs_reflink.h                  |   2 +-
 fs/zonefs/super.c                     |   4 +-
 include/linux/backing-dev.h           |   5 +-
 include/linux/fs.h                    |  99 ++++++++++++--
 include/linux/writeback.h             |   9 +-
 include/trace/events/writeback.h      |   8 +-
 mm/backing-dev.c                      |   2 +-
 mm/filemap.c                          |   4 +-
 mm/truncate.c                         |   6 +-
 mm/vmscan.c                           |   2 +-
 mm/workingset.c                       |   2 +-
 security/landlock/fs.c                |   2 +-
 115 files changed, 514 insertions(+), 414 deletions(-)
[GIT PULL 05/17 for v6.19] namespaces
Posted by Christian Brauner 3 days, 4 hours ago
Hey Linus,

/* Summary */
This contains substantial namespace infrastructure changes including a new
system call, active reference counting, and extensive header cleanups.
The branch depends on the shared kbuild branch for -fms-extensions support.

Features

- listns() System Call

  Add a new listns() system call that allows userspace to iterate through
  namespaces in the system. This provides a programmatic interface to
  discover and inspect namespaces, addressing longstanding limitations:

  Currently, there is no direct way for userspace to enumerate namespaces.
  Applications must resort to scanning /proc//ns/ across all processes,
  which is:

  1. Inefficient - requires iterating over all processes
  2. Incomplete - misses namespaces not attached to any running process but
     kept alive by file descriptors, bind mounts, or parent references
  3. Permission-heavy - requires access to /proc for many processes
  4. No ordering or ownership information
  5. No filtering per namespace type

  The listns() system call solves these problems:

  ssize_t listns(const struct ns_id_req *req, u64 *ns_ids,
                 size_t nr_ns_ids, unsigned int flags);

  struct ns_id_req {
          __u32 size;
          __u32 spare;
          __u64 ns_id;
          struct /* listns */ {
                  __u32 ns_type;
                  __u32 spare2;
                  __u64 user_ns_id;
          };
  };

  Features include:

  - Pagination support for large namespace sets

  - Filtering by namespace type (MNT_NS, NET_NS, USER_NS, etc.)

  - Filtering by owning user namespace

  - Permission checks respecting namespace isolation

- Active Reference Counting

  Introduce an active reference count that tracks namespace visibility to
  userspace. A namespace is visible in the following cases:

  1. The namespace is in use by a task
  2. The namespace is persisted through a VFS object (namespace file
     descriptor or bind-mount)
  3. The namespace is a hierarchical type and is the parent of child
     namespaces

  The active reference count does not regulate lifetime (that's still done
  by the normal reference count) - it only regulates visibility to namespace
  file handles and listns().

  This prevents resurrection of namespaces that are pinned only for internal
  kernel reasons (e.g., user namespaces held by file->f_cred, lazy TLB
  references on idle CPUs, etc.) which should not be accessible via (1)-(3).

- Unified Namespace Tree

  Introduce a unified tree structure for all namespaces with:

  - Fixed IDs assigned to initial namespaces

  - Lookup based solely on inode number

  - Maintained list of owned namespaces per user namespace

  - Simplified rbtree comparison helpers

Cleanups

- Header Reorganization

  - Move namespace types into separate header (ns_common_types.h)

  - Decouple nstree from ns_common header

  - Move nstree types into separate header

  - Switch to new ns_tree_{node,root} structures with helper functions

  - Use guards for ns_tree_lock

- Initial Namespace Reference Count Optimization

  - Make all reference counts on initial namespaces a nop to avoid
    pointless cacheline ping-pong for namespaces that can never go away

  - Drop custom reference count initialization for initial namespaces

  - Add NS_COMMON_INIT() macro and use it for all namespaces

  - pid: rely on common reference count behavior

- Miscellaneous Cleanups

  - Rename exit_task_namespaces() to exit_nsproxy_namespaces()

  - Rename is_initial_namespace() and make argument const

  - Use boolean to indicate anonymous mount namespace

  - Simplify owner list iteration in nstree

  - nsfs: raise SB_I_NODEV, SB_I_NOEXEC, and DCACHE_DONTCACHE explicitly

  - nsfs: use inode_just_drop()

  - pidfs: raise DCACHE_DONTCACHE explicitly

  - pidfs: simplify PIDFD_GET__NAMESPACE ioctls

  - libfs: allow to specify s_d_flags

  - cgroup: add cgroup namespace to tree after owner is set

  - nsproxy: fix free_nsproxy() and simplify create_new_namespaces()

Fixes

- setns(pidfd, ...) Race Condition

  Fix a subtle race when using pidfds with setns(). When the target task
  exits after prepare_nsset() but before commit_nsset(), the namespace's
  active reference count might have been dropped. If setns() then installs
  the namespaces, it would bump the active reference count from zero without
  taking the required reference on the owner namespace, leading to underflow
  when later decremented.

  The fix resurrects the ownership chain if necessary - if the caller
  succeeded in grabbing passive references, the setns() should succeed even
  if the target task exits or gets reaped.

- Return EFAULT on put_user() error instead of success

- Make sure references are dropped outside of RCU lock (some namespaces
  like mount namespace sleep when putting the last reference)

- Don't skip active reference count initialization for network namespace

- Add asserts for active refcount underflow

- Add asserts for initial namespace reference counts (both passive and
  active)

- ipc: enable is_ns_init_id() assertions

- Fix kernel-doc comments for internal nstree functions

- Selftests

  - 15 active reference count tests

  - 9 listns() functionality tests

  - 7 listns() permission tests

  - 12 inactive namespace resurrection tests

  - 3 threaded active reference count tests

  - commit_creds() active reference tests

  - Pagination and stress tests

  - EFAULT handling test

  - nsid tests fixes

/* 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
=============================

diff --cc fs/namespace.c
index a7fd9682bcf9,25289b869be1..000000000000
--- a/fs/namespace.c
+++ b/fs/namespace.c

Merge conflicts with other trees
================================

[1] https://lore.kernel.org/linux-next/20251118110822.72e36c15@canb.auug.org.au

The following changes since commit dcb6fa37fd7bc9c3d2b066329b0d27dedf8becaa:

  Linux 6.18-rc3 (2025-10-26 15:59:49 -0700)

are available in the Git repository at:

  git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/namespace-6.19-rc1

for you to fetch changes up to a71e4f103aed69e7a11ea913312726bb194c76ee:

  pidfs: simplify PIDFD_GET_<type>_NAMESPACE ioctls (2025-11-17 16:23:13 +0100)

Please consider pulling these changes from the signed namespace-6.19-rc1 tag.

Thanks!
Christian

----------------------------------------------------------------
namespace-6.19-rc1

----------------------------------------------------------------
Christian Brauner (107):
      libfs: allow to specify s_d_flags
      nsfs: use inode_just_drop()
      nsfs: raise DCACHE_DONTCACHE explicitly
      pidfs: raise DCACHE_DONTCACHE explicitly
      nsfs: raise SB_I_NODEV and SB_I_NOEXEC
      cgroup: add cgroup namespace to tree after owner is set
      nstree: simplify return
      ns: add missing authorship
      ns: add NS_COMMON_INIT()
      ns: use NS_COMMON_INIT() for all namespaces
      ns: initialize ns_list_node for initial namespaces
      ns: add __ns_ref_read()
      ns: rename to exit_nsproxy_namespaces()
      ns: add active reference count
      ns: use anonymous struct to group list member
      nstree: introduce a unified tree
      nstree: allow lookup solely based on inode
      nstree: assign fixed ids to the initial namespaces
      nstree: maintain list of owned namespaces
      nstree: simplify rbtree comparison helpers
      nstree: add unified namespace list
      nstree: add listns()
      arch: hookup listns() system call
      nsfs: update tools header
      selftests/filesystems: remove CLONE_NEWPIDNS from setup_userns() helper
      selftests/namespaces: first active reference count tests
      selftests/namespaces: second active reference count tests
      selftests/namespaces: third active reference count tests
      selftests/namespaces: fourth active reference count tests
      selftests/namespaces: fifth active reference count tests
      selftests/namespaces: sixth active reference count tests
      selftests/namespaces: seventh active reference count tests
      selftests/namespaces: eigth active reference count tests
      selftests/namespaces: ninth active reference count tests
      selftests/namespaces: tenth active reference count tests
      selftests/namespaces: eleventh active reference count tests
      selftests/namespaces: twelth active reference count tests
      selftests/namespaces: thirteenth active reference count tests
      selftests/namespaces: fourteenth active reference count tests
      selftests/namespaces: fifteenth active reference count tests
      selftests/namespaces: add listns() wrapper
      selftests/namespaces: first listns() test
      selftests/namespaces: second listns() test
      selftests/namespaces: third listns() test
      selftests/namespaces: fourth listns() test
      selftests/namespaces: fifth listns() test
      selftests/namespaces: sixth listns() test
      selftests/namespaces: seventh listns() test
      selftests/namespaces: eigth listns() test
      selftests/namespaces: ninth listns() test
      selftests/namespaces: first listns() permission test
      selftests/namespaces: second listns() permission test
      selftests/namespaces: third listns() permission test
      selftests/namespaces: fourth listns() permission test
      selftests/namespaces: fifth listns() permission test
      selftests/namespaces: sixth listns() permission test
      selftests/namespaces: seventh listns() permission test
      selftests/namespaces: first inactive namespace resurrection test
      selftests/namespaces: second inactive namespace resurrection test
      selftests/namespaces: third inactive namespace resurrection test
      selftests/namespaces: fourth inactive namespace resurrection test
      selftests/namespaces: fifth inactive namespace resurrection test
      selftests/namespaces: sixth inactive namespace resurrection test
      selftests/namespaces: seventh inactive namespace resurrection test
      selftests/namespaces: eigth inactive namespace resurrection test
      selftests/namespaces: ninth inactive namespace resurrection test
      selftests/namespaces: tenth inactive namespace resurrection test
      selftests/namespaces: eleventh inactive namespace resurrection test
      selftests/namespaces: twelth inactive namespace resurrection test
      selftests/namespace: first threaded active reference count test
      selftests/namespace: second threaded active reference count test
      selftests/namespace: third threaded active reference count test
      selftests/namespace: commit_creds() active reference tests
      selftests/namespace: add stress test
      selftests/namespace: test listns() pagination
      Merge patch series "nstree: listns()"
      ns: don't skip active reference count initialization
      ns: don't increment or decrement initial namespaces
      ns: make sure reference are dropped outside of rcu lock
      ns: return EFAULT on put_user() error
      ns: handle setns(pidfd, ...) cleanly
      ns: add asserts for active refcount underflow
      selftests/namespaces: add active reference count regression test
      Merge patch "kbuild: Add '-fms-extensions' to areas with dedicated CFLAGS"
      selftests/namespaces: test for efault
      Merge patch series "ns: fixes for namespace iteration and active reference counting"
      Merge branch 'kbuild-6.19.fms.extension'
      ns: move namespace types into separate header
      nstree: decouple from ns_common header
      nstree: move nstree types into separate header
      nstree: add helper to operate on struct ns_tree_{node,root}
      nstree: switch to new structures
      nstree: simplify owner list iteration
      nstree: use guards for ns_tree_lock
      ns: make is_initial_namespace() argument const
      ns: rename is_initial_namespace()
      fs: use boolean to indicate anonymous mount namespace
      ipc: enable is_ns_init_id() assertions
      ns: make all reference counts on initial namespace a nop
      ns: add asserts for initial namespace reference counts
      ns: add asserts for initial namespace active reference counts
      pid: rely on common reference count behavior
      ns: drop custom reference count initialization for initial namespaces
      selftests/namespaces: fix nsid tests
      Merge patch series "ns: header cleanups and initial namespace reference count improvements"
      nsproxy: fix free_nsproxy() and simplify create_new_namespaces()
      pidfs: simplify PIDFD_GET_<type>_NAMESPACE ioctls

Kriish Sharma (1):
      nstree: fix kernel-doc comments for internal functions

Nathan Chancellor (2):
      jfs: Rename _inline to avoid conflict with clang's '-fms-extensions'
      kbuild: Add '-fms-extensions' to areas with dedicated CFLAGS

Rasmus Villemoes (1):
      Kbuild: enable -fms-extensions

 Makefile                                           |    3 +
 arch/alpha/kernel/syscalls/syscall.tbl             |    1 +
 arch/arm/tools/syscall.tbl                         |    1 +
 arch/arm64/kernel/vdso32/Makefile                  |    3 +-
 arch/arm64/tools/syscall_32.tbl                    |    1 +
 arch/loongarch/vdso/Makefile                       |    2 +-
 arch/m68k/kernel/syscalls/syscall.tbl              |    1 +
 arch/microblaze/kernel/syscalls/syscall.tbl        |    1 +
 arch/mips/kernel/syscalls/syscall_n32.tbl          |    1 +
 arch/mips/kernel/syscalls/syscall_n64.tbl          |    1 +
 arch/mips/kernel/syscalls/syscall_o32.tbl          |    1 +
 arch/parisc/boot/compressed/Makefile               |    2 +-
 arch/parisc/kernel/syscalls/syscall.tbl            |    1 +
 arch/powerpc/boot/Makefile                         |    3 +-
 arch/powerpc/kernel/syscalls/syscall.tbl           |    1 +
 arch/s390/Makefile                                 |    3 +-
 arch/s390/kernel/syscalls/syscall.tbl              |    1 +
 arch/s390/purgatory/Makefile                       |    3 +-
 arch/sh/kernel/syscalls/syscall.tbl                |    1 +
 arch/sparc/kernel/syscalls/syscall.tbl             |    1 +
 arch/x86/Makefile                                  |    4 +-
 arch/x86/boot/compressed/Makefile                  |    7 +-
 arch/x86/entry/syscalls/syscall_32.tbl             |    1 +
 arch/x86/entry/syscalls/syscall_64.tbl             |    1 +
 arch/xtensa/kernel/syscalls/syscall.tbl            |    1 +
 drivers/firmware/efi/libstub/Makefile              |    4 +-
 fs/jfs/jfs_incore.h                                |    6 +-
 fs/libfs.c                                         |    1 +
 fs/mount.h                                         |    3 +-
 fs/namespace.c                                     |   12 +-
 fs/nsfs.c                                          |  101 +-
 fs/pidfs.c                                         |   76 +-
 include/linux/ns/ns_common_types.h                 |  196 ++
 include/linux/ns/nstree_types.h                    |   55 +
 include/linux/ns_common.h                          |  233 +-
 include/linux/nsfs.h                               |    3 +
 include/linux/nsproxy.h                            |    9 +-
 include/linux/nstree.h                             |   52 +-
 include/linux/pid_namespace.h                      |    3 +-
 include/linux/pseudo_fs.h                          |    1 +
 include/linux/syscalls.h                           |    4 +
 include/linux/user_namespace.h                     |    4 +-
 include/uapi/asm-generic/unistd.h                  |    4 +-
 include/uapi/linux/nsfs.h                          |   58 +
 init/version-timestamp.c                           |    7 +-
 ipc/msgutil.c                                      |    7 +-
 ipc/namespace.c                                    |    3 +-
 kernel/cgroup/cgroup.c                             |   11 +-
 kernel/cgroup/namespace.c                          |    2 +-
 kernel/cred.c                                      |    6 +
 kernel/exit.c                                      |    3 +-
 kernel/fork.c                                      |    3 +-
 kernel/nscommon.c                                  |  246 +-
 kernel/nsproxy.c                                   |   57 +-
 kernel/nstree.c                                    |  782 +++++-
 kernel/pid.c                                       |   12 +-
 kernel/pid_namespace.c                             |    2 +-
 kernel/time/namespace.c                            |    5 +-
 kernel/user.c                                      |    7 +-
 net/core/net_namespace.c                           |    2 +-
 scripts/Makefile.extrawarn                         |    4 +-
 scripts/syscall.tbl                                |    1 +
 tools/include/uapi/linux/nsfs.h                    |   70 +
 tools/testing/selftests/filesystems/utils.c        |    2 +-
 tools/testing/selftests/namespaces/.gitignore      |    9 +
 tools/testing/selftests/namespaces/Makefile        |   24 +-
 .../selftests/namespaces/cred_change_test.c        |  814 ++++++
 .../selftests/namespaces/listns_efault_test.c      |  530 ++++
 .../selftests/namespaces/listns_pagination_bug.c   |  138 +
 .../selftests/namespaces/listns_permissions_test.c |  759 ++++++
 tools/testing/selftests/namespaces/listns_test.c   |  679 +++++
 .../selftests/namespaces/ns_active_ref_test.c      | 2672 ++++++++++++++++++++
 tools/testing/selftests/namespaces/nsid_test.c     |  107 +-
 .../namespaces/regression_pidfd_setns_test.c       |  113 +
 .../testing/selftests/namespaces/siocgskns_test.c  | 1824 +++++++++++++
 tools/testing/selftests/namespaces/stress_test.c   |  626 +++++
 tools/testing/selftests/namespaces/wrappers.h      |   35 +
 77 files changed, 9997 insertions(+), 436 deletions(-)
 create mode 100644 include/linux/ns/ns_common_types.h
 create mode 100644 include/linux/ns/nstree_types.h
 create mode 100644 tools/testing/selftests/namespaces/cred_change_test.c
 create mode 100644 tools/testing/selftests/namespaces/listns_efault_test.c
 create mode 100644 tools/testing/selftests/namespaces/listns_pagination_bug.c
 create mode 100644 tools/testing/selftests/namespaces/listns_permissions_test.c
 create mode 100644 tools/testing/selftests/namespaces/listns_test.c
 create mode 100644 tools/testing/selftests/namespaces/ns_active_ref_test.c
 create mode 100644 tools/testing/selftests/namespaces/regression_pidfd_setns_test.c
 create mode 100644 tools/testing/selftests/namespaces/siocgskns_test.c
 create mode 100644 tools/testing/selftests/namespaces/stress_test.c
 create mode 100644 tools/testing/selftests/namespaces/wrappers.h
Re: [GIT PULL 05/17 for v6.19] namespaces
Posted by Eric W. Biederman 2 hours ago
Christian Brauner <brauner@kernel.org> writes:

> Hey Linus,
>
> /* Summary */
> This contains substantial namespace infrastructure changes including a new
> system call, active reference counting, and extensive header cleanups.
> The branch depends on the shared kbuild branch for -fms-extensions
> support.

I am missing something.  From the description it looks like
you are making nested containers impossible once this feature
is adopted.  Because the container will be able to see all of
the other namespaces and thus to see outside of it's own namespace.

The reason such as system call has not been introduced in the past
is because it introduces the namespace of namespace problem.

How have you solved the namespace of namespaces problem?

If you want nesting of containers the listing of namespaces very
much must be incomplete.

I haven't looked at reviewed or looked at the code yet because
the code was not posted in any of the usual places for container
development, nor was I copied.

Can you please describe how you are avoiding the namespace of namespaces
problem?


Eric
[GIT PULL 06/17 for v6.19] vfs coredump
Posted by Christian Brauner 3 days, 4 hours ago
Hey Linus,

/* Summary */
This contains the pidfd changes for this cycle.

Features

- Expose Coredump Signal via pidfd

  Expose the signal that caused the coredump through the pidfd interface.
  The recent changes to rework coredump handling to rely on unix sockets
  are in the process of being used in systemd. The previous systemd
  coredump container interface requires the coredump file descriptor and
  basic information including the signal number to be sent to the container.
  This means the signal number needs to be available before sending the
  coredump to the container.

- Add supported_mask Field to pidfd

  Add a new supported_mask field to struct pidfd_info that indicates which
  information fields are supported by the running kernel. This allows
  userspace to detect feature availability without relying on error codes
  or kernel version checks.

Cleanups

- Drop struct pidfs_exit_info and prepare to drop exit_info pointer,
  simplifying the internal publication mechanism for exit and coredump
  information retrievable via the pidfd ioctl.

- Use guard() for task_lock in pidfs.

- Reduce wait_pidfd lock scope.

- Add missing PIDFD_INFO_SIZE_VER1 constant.

- Add missing BUILD_BUG_ON() assert on struct pidfd_info.

Fixes

- Fix PIDFD_INFO_COREDUMP handling.

Selftests

- Split out coredump socket tests and common helpers into separate files
  for better organization.

- Fix userspace coredump client detection issues.

- Handle edge-triggered epoll correctly.

- Ignore ENOSPC errors in tests.

- Add debug logging to coredump socket tests, socket protocol tests,
  and test helpers.

- Add tests for PIDFD_INFO_COREDUMP_SIGNAL.

- Add tests for supported_mask field.

- Update pidfd header for selftests.

/* 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
================================

The following changes since commit 3a8660878839faadb4f1a6dd72c3179c1df56787:

  Linux 6.18-rc1 (2025-10-12 13:42:36 -0700)

are available in the Git repository at:

  git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/vfs-6.19-rc1.coredump

for you to fetch changes up to 390d967653e17205f0e519f691b7d6be0a05ff45:

  pidfs: reduce wait_pidfd lock scope (2025-11-05 00:09:06 +0100)

Please consider pulling these changes from the signed vfs-6.19-rc1.coredump tag.

Thanks!
Christian

----------------------------------------------------------------
vfs-6.19-rc1.coredump

----------------------------------------------------------------
Christian Brauner (24):
      pidfs: use guard() for task_lock
      pidfs: fix PIDFD_INFO_COREDUMP handling
      pidfs: add missing PIDFD_INFO_SIZE_VER1
      pidfs: add missing BUILD_BUG_ON() assert on struct pidfd_info
      pidfd: add a new supported_mask field
      pidfs: prepare to drop exit_info pointer
      pidfs: drop struct pidfs_exit_info
      pidfs: expose coredump signal
      selftests/pidfd: update pidfd header
      selftests/pidfd: add first supported_mask test
      selftests/pidfd: add second supported_mask test
      selftests/coredump: split out common helpers
      selftests/coredump: split out coredump socket tests
      selftests/coredump: fix userspace client detection
      selftests/coredump: fix userspace coredump client detection
      selftests/coredump: handle edge-triggered epoll correctly
      selftests/coredump: add debug logging to test helpers
      selftests/coredump: add debug logging to coredump socket tests
      selftests/coredump: add debug logging to coredump socket protocol tests
      selftests/coredump: ignore ENOSPC errors
      selftests/coredump: add first PIDFD_INFO_COREDUMP_SIGNAL test
      selftests/coredump: add second PIDFD_INFO_COREDUMP_SIGNAL test
      Merge patch series "coredump: cleanups & pidfd extension"
      pidfs: reduce wait_pidfd lock scope

 fs/pidfs.c                                         |  113 +-
 include/uapi/linux/pidfd.h                         |   11 +-
 tools/testing/selftests/coredump/.gitignore        |    4 +
 tools/testing/selftests/coredump/Makefile          |    8 +-
 .../coredump/coredump_socket_protocol_test.c       | 1568 ++++++++++++++++++
 .../selftests/coredump/coredump_socket_test.c      |  742 +++++++++
 tools/testing/selftests/coredump/coredump_test.h   |   59 +
 .../selftests/coredump/coredump_test_helpers.c     |  383 +++++
 tools/testing/selftests/coredump/stackdump_test.c  | 1662 +-------------------
 tools/testing/selftests/pidfd/pidfd.h              |   15 +-
 tools/testing/selftests/pidfd/pidfd_info_test.c    |   73 +
 11 files changed, 2927 insertions(+), 1711 deletions(-)
 create mode 100644 tools/testing/selftests/coredump/.gitignore
 create mode 100644 tools/testing/selftests/coredump/coredump_socket_protocol_test.c
 create mode 100644 tools/testing/selftests/coredump/coredump_socket_test.c
 create mode 100644 tools/testing/selftests/coredump/coredump_test.h
 create mode 100644 tools/testing/selftests/coredump/coredump_test_helpers.c
[GIT PULL 07/17 for v6.19] vfs folio
Posted by Christian Brauner 3 days, 4 hours ago
Hey Linus,

/* Summary */
Add a new folio_next_pos() helper function that returns the file position
of the first byte after the current folio. This is a common operation in
filesystems when needing to know the end of the current folio.

The helper is lifted from btrfs which already had its own version, and
is now used across multiple filesystems and subsystems:

- btrfs
- buffer
- ext4
- f2fs
- gfs2
- iomap
- netfs
- xfs
- mm

This fixes a long-standing bug in ocfs2 on 32-bit systems with files
larger than 2GiB. Presumably this is not a common configuration, but the
fix is backported anyway. The other filesystems did not have bugs, they
were just mildly inefficient.

This also introduce uoff_t as the unsigned version of loff_t. A recent
commit inadvertently changed a comparison from being unsigned (on 64-bit
systems) to being signed (which it had always been on 32-bit systems),
leading to sporadic fstests failures.

Generally file sizes are restricted to being a signed integer, but in
places where -1 is passed to indicate "up to the end of the file", it is
convenient to have an unsigned type to ensure comparisons are always
unsigned regardless of architecture.

/* 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/20251103085832.5d7ff280@canb.auug.org.au

[2]: https://lore.kernel.org/linux-next/20251124100508.64a6974a@canb.auug.org.au

The following changes since commit 3a8660878839faadb4f1a6dd72c3179c1df56787:

  Linux 6.18-rc1 (2025-10-12 13:42:36 -0700)

are available in the Git repository at:

  git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/vfs-6.19-rc1.folio

for you to fetch changes up to 37d369fa97cc0774ea4eab726d16bcb5fbe3a104:

  fs: Add uoff_t (2025-11-25 10:07:42 +0100)

Please consider pulling these changes from the signed vfs-6.19-rc1.folio tag.

Thanks!
Christian

----------------------------------------------------------------
vfs-6.19-rc1.folio

----------------------------------------------------------------
Christian Brauner (1):
      Merge patch series "Add and use folio_next_pos()"

Matthew Wilcox (Oracle) (11):
      filemap: Add folio_next_pos()
      btrfs: Use folio_next_pos()
      buffer: Use folio_next_pos()
      ext4: Use folio_next_pos()
      f2fs: Use folio_next_pos()
      gfs2: Use folio_next_pos()
      iomap: Use folio_next_pos()
      netfs: Use folio_next_pos()
      xfs: Use folio_next_pos()
      mm: Use folio_next_pos()
      fs: Add uoff_t

 fs/btrfs/compression.h                 |  4 ++--
 fs/btrfs/defrag.c                      |  7 ++++---
 fs/btrfs/extent_io.c                   | 16 ++++++++--------
 fs/btrfs/file.c                        |  9 +++++----
 fs/btrfs/inode.c                       | 11 ++++++-----
 fs/btrfs/misc.h                        |  5 -----
 fs/btrfs/ordered-data.c                |  2 +-
 fs/btrfs/subpage.c                     |  5 +++--
 fs/buffer.c                            |  2 +-
 fs/ext4/inode.c                        | 10 +++++-----
 fs/f2fs/compress.c                     |  2 +-
 fs/gfs2/aops.c                         |  3 +--
 fs/iomap/buffered-io.c                 | 10 ++++------
 fs/netfs/buffered_write.c              |  2 +-
 fs/netfs/misc.c                        |  2 +-
 fs/ocfs2/alloc.c                       |  2 +-
 fs/xfs/scrub/xfarray.c                 |  2 +-
 fs/xfs/xfs_aops.c                      |  2 +-
 include/linux/mm.h                     |  8 ++++----
 include/linux/pagemap.h                | 11 +++++++++++
 include/linux/shmem_fs.h               |  2 +-
 include/linux/types.h                  |  1 +
 include/uapi/asm-generic/posix_types.h |  1 +
 mm/shmem.c                             |  8 ++++----
 mm/truncate.c                          |  4 ++--
 25 files changed, 70 insertions(+), 61 deletions(-)
[GIT PULL 10/17 for v6.19] vfs super guards
Posted by Christian Brauner 3 days, 4 hours ago
Hey Linus,

/* Summary */
This starts the work of introducing guards for superblock related locks.
Note that this branch includes the fs_header cleanups as a dependency.

Introduce super_write_guard for scoped superblock write protection. This
provides a guard-based alternative to the manual sb_start_write() and
sb_end_write() pattern, allowing the compiler to automatically handle
the cleanup.

/* 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
================================

The following changes since commit dcb6fa37fd7bc9c3d2b066329b0d27dedf8becaa:

  Linux 6.18-rc3 (2025-10-26 15:59:49 -0700)

are available in the Git repository at:

  git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/vfs-6.19-rc1.guards

for you to fetch changes up to 73fd0dba0beb1d2d1695ee5452eac8dfabce3f9e:

  Merge patch series "fs: introduce super write guard" (2025-11-05 22:59:31 +0100)

Please consider pulling these changes from the signed vfs-6.19-rc1.guards tag.

Thanks!
Christian

----------------------------------------------------------------
vfs-6.19-rc1.guards

----------------------------------------------------------------
Christian Brauner (13):
      fs: rename fs_types.h to fs_dirent.h
      fs: add fs/super_types.h header
      fs: add fs/super.h header
      Merge patch series "fs: start to split up fs.h"
      fs: add super_write_guard
      btrfs: use super write guard in btrfs_reclaim_bgs_work()
      btrfs: use super write guard btrfs_run_defrag_inode()
      btrfs: use super write guard in sb_start_write()
      ext4: use super write guard in write_mmp_block()
      btrfs: use super write guard in relocating_repair_kthread()
      open: use super write guard in do_ftruncate()
      xfs: use super write guard in xfs_file_ioctl()
      Merge patch series "fs: introduce super write guard"

Mateusz Guzik (1):
      fs: inline current_umask() and move it to fs_struct.h

 fs/9p/acl.c                               |   1 +
 fs/Makefile                               |   2 +-
 fs/btrfs/block-group.c                    |  10 +-
 fs/btrfs/defrag.c                         |   7 +-
 fs/btrfs/inode.c                          |   1 +
 fs/btrfs/volumes.c                        |   9 +-
 fs/ext4/mmp.c                             |   8 +-
 fs/f2fs/acl.c                             |   1 +
 fs/fat/inode.c                            |   1 +
 fs/{fs_types.c => fs_dirent.c}            |   2 +-
 fs/fs_struct.c                            |   6 -
 fs/hfsplus/options.c                      |   1 +
 fs/hpfs/super.c                           |   1 +
 fs/nilfs2/nilfs.h                         |   1 +
 fs/ntfs3/super.c                          |   1 +
 fs/ocfs2/acl.c                            |   1 +
 fs/omfs/inode.c                           |   1 +
 fs/open.c                                 |   9 +-
 fs/smb/client/file.c                      |   1 +
 fs/smb/client/inode.c                     |   1 +
 fs/smb/client/smb1ops.c                   |   1 +
 fs/xfs/xfs_ioctl.c                        |   6 +-
 include/linux/fs.h                        | 528 +-----------------------------
 include/linux/fs/super.h                  | 238 ++++++++++++++
 include/linux/fs/super_types.h            | 335 +++++++++++++++++++
 include/linux/{fs_types.h => fs_dirent.h} |  11 +-
 include/linux/fs_struct.h                 |   6 +
 include/linux/namei.h                     |   1 +
 28 files changed, 620 insertions(+), 571 deletions(-)
 rename fs/{fs_types.c => fs_dirent.c} (98%)
 create mode 100644 include/linux/fs/super.h
 create mode 100644 include/linux/fs/super_types.h
 rename include/linux/{fs_types.h => fs_dirent.h} (92%)
[GIT PULL 11/17 for v6.19] minix
Posted by Christian Brauner 3 days, 4 hours ago
Hey Linus,

/* Summary */
Fix two syzbot corruption bugs in the minix filesystem. Syzbot fuzzes
filesystems by trying to mount and manipulate deliberately corrupted
images. This should not lead to BUG_ONs and WARN_ONs for easy to detect
corruptions.

- Add error handling to minix filesystem for inode corruption detection,
  enabling the filesystem to report such corruptions cleanly.

- Fix a drop_nlink warning in minix_rmdir() triggered by corrupted
  directory link counts.

- Fix a drop_nlink warning in minix_rename() triggered by corrupted
  inode link counts.

/* 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
================================

The following changes since commit 3a8660878839faadb4f1a6dd72c3179c1df56787:

  Linux 6.18-rc1 (2025-10-12 13:42:36 -0700)

are available in the Git repository at:

  git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/vfs-6.19-rc1.minix

for you to fetch changes up to 0d534518ce87317e884dbd1485111b0f1606a194:

  Merge patch series "Fix two syzbot corruption bugs in minix filesystem" (2025-11-05 13:45:26 +0100)

Please consider pulling these changes from the signed vfs-6.19-rc1.minix tag.

Thanks!
Christian

----------------------------------------------------------------
vfs-6.19-rc1.minix

----------------------------------------------------------------
Christian Brauner (1):
      Merge patch series "Fix two syzbot corruption bugs in minix filesystem"

Jori Koolstra (3):
      Add error handling to minix filesystem for inode corruption detection
      Fix a drop_nlink warning in minix_rmdir
      Fix a drop_nlink warning in minix_rename

 fs/minix/inode.c | 16 ++++++++++++++++
 fs/minix/minix.h |  9 +++++++++
 fs/minix/namei.c | 39 ++++++++++++++++++++++++++++++++-------
 3 files changed, 57 insertions(+), 7 deletions(-)
[GIT PULL 12/17 for v6.19] vfs directory delegations
Posted by Christian Brauner 3 days, 4 hours ago
Hey Linus,

/* Summary */
This contains the work for cecall-only directory delegations for knfsd.

Add support for simple, recallable-only directory delegations. This was
decided at the fall NFS Bakeathon where the NFS client and server
maintainers discussed how to merge directory delegation support.

The approach starts with recallable-only delegations for several reasons:

1. RFC8881 has gaps that are being addressed in RFC8881bis. In particular,
  it requires directory position information for CB_NOTIFY callbacks,
  which is difficult to implement properly under Linux. The spec is being
  extended to allow that information to be omitted.

2. Client-side support for CB_NOTIFY still lags. The client side involves
  heuristics about when to request a delegation.

3. Early indication shows simple, recallable-only delegations can help
  performance. Anna Schumaker mentioned seeing a multi-minute speedup in
  xfstests runs with them enabled.

With these changes, userspace can also request a read lease on a
directory that will be recalled on conflicting accesses. This may be
useful for applications like Samba. Users can disable leases altogether
via the fs.leases-enable sysctl if needed.

VFS Changes

- Dedicated Type for Delegations

  Introduce struct delegated_inode to track inodes that may have delegations
  that need to be broken. This replaces the previous approach of passing
  raw inode pointers through the delegation breaking code paths, providing
  better type safety and clearer semantics for the delegation machinery.

- Break parent directory delegations in open(..., O_CREAT) codepath

- Allow mkdir to wait for delegation break on parent

- Allow rmdir to wait for delegation break on parent

- Add try_break_deleg calls for parents to vfs_link(), vfs_rename(),
  and vfs_unlink()

- Make vfs_create(), vfs_mknod(), and vfs_symlink() break delegations
  on parent directory

- Clean up argument list for vfs_create()

- Expose delegation support to userland

Filelock Changes

- Make lease_alloc() take a flags argument

- Rework the __break_lease API to use flags

- Add struct delegated_inode

- Push the S_ISREG check down to ->setlease handlers

  - Lift the ban on directory leases in generic_setlease

NFSD Changes

- Allow filecache to hold S_IFDIR files

- Allow DELEGRETURN on directories

- Wire up GET_DIR_DELEGATION handling

Fixes

- Fix kernel-doc warnings in __fcntl_getlease
- Add needed headers for new struct delegation definition

/* 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/20251117073452.2c9b0190@canb.auug.org.au

The following changes since commit 3a8660878839faadb4f1a6dd72c3179c1df56787:

  Linux 6.18-rc1 (2025-10-12 13:42:36 -0700)

are available in the Git repository at:

  git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/vfs-6.19-rc1.directory.delegations

for you to fetch changes up to 4be9e04ebf75a5c4478c1c6295e2122e5dc98f5f:

  vfs: add needed headers for new struct delegation definition (2025-11-28 10:55:34 +0100)

Please consider pulling these changes from the signed vfs-6.19-rc1.directory.delegations tag.

Thanks!
Christian

----------------------------------------------------------------
vfs-6.19-rc1.directory.delegations

----------------------------------------------------------------
Christian Brauner (1):
      Merge patch series "vfs: recall-only directory delegations for knfsd"

Jeff Layton (18):
      filelock: make lease_alloc() take a flags argument
      filelock: rework the __break_lease API to use flags
      filelock: add struct delegated_inode
      filelock: push the S_ISREG check down to ->setlease handlers
      vfs: add try_break_deleg calls for parents to vfs_{link,rename,unlink}
      vfs: allow mkdir to wait for delegation break on parent
      vfs: allow rmdir to wait for delegation break on parent
      vfs: break parent dir delegations in open(..., O_CREAT) codepath
      vfs: clean up argument list for vfs_create()
      vfs: make vfs_create break delegations on parent directory
      vfs: make vfs_mknod break delegations on parent directory
      vfs: make vfs_symlink break delegations on parent dir
      filelock: lift the ban on directory leases in generic_setlease
      nfsd: allow filecache to hold S_IFDIR files
      nfsd: allow DELEGRETURN on directories
      nfsd: wire up GET_DIR_DELEGATION handling
      vfs: expose delegation support to userland
      vfs: add needed headers for new struct delegation definition

Randy Dunlap (1):
      filelock: __fcntl_getlease: fix kernel-doc warnings

 drivers/base/devtmpfs.c    |   6 +-
 fs/attr.c                  |   2 +-
 fs/cachefiles/namei.c      |   2 +-
 fs/ecryptfs/inode.c        |  11 ++-
 fs/fcntl.c                 |  13 ++++
 fs/fuse/dir.c              |   1 +
 fs/init.c                  |   6 +-
 fs/locks.c                 | 103 ++++++++++++++++++++--------
 fs/namei.c                 | 162 +++++++++++++++++++++++++++++++++------------
 fs/nfs/nfs4file.c          |   2 +
 fs/nfsd/filecache.c        |  57 ++++++++++++----
 fs/nfsd/filecache.h        |   2 +
 fs/nfsd/nfs3proc.c         |   2 +-
 fs/nfsd/nfs4proc.c         |  22 +++++-
 fs/nfsd/nfs4recover.c      |   6 +-
 fs/nfsd/nfs4state.c        | 103 +++++++++++++++++++++++++++-
 fs/nfsd/state.h            |   5 ++
 fs/nfsd/vfs.c              |  16 ++---
 fs/nfsd/vfs.h              |   2 +-
 fs/open.c                  |  12 ++--
 fs/overlayfs/overlayfs.h   |  10 +--
 fs/posix_acl.c             |   8 +--
 fs/smb/client/cifsfs.c     |   3 +
 fs/smb/server/vfs.c        |   9 ++-
 fs/utimes.c                |   4 +-
 fs/xattr.c                 |  12 ++--
 fs/xfs/scrub/orphanage.c   |   2 +-
 include/linux/filelock.h   |  98 +++++++++++++++++++++------
 include/linux/fs.h         |  24 ++++---
 include/linux/xattr.h      |   4 +-
 include/uapi/linux/fcntl.h |  16 +++++
 net/unix/af_unix.c         |   2 +-
 32 files changed, 550 insertions(+), 177 deletions(-)
[GIT PULL 14/17 for v6.19] overlayfs cred guards
Posted by Christian Brauner 3 days, 4 hours ago
Hey Linus,

/* Summary */
This converts all of overlayfs to use credential guards, eliminating
manual credential management throughout the filesystem. It depends on
the directory locking changes, the kbuild -fms-extensions support, and
the credential guard infrastructure.

Complete Credential Guard Conversion

- Convert all of overlayfs to use credential guards, replacing the manual
  ovl_override_creds()/ovl_revert_creds() pattern with scoped guards. This
  makes credential handling visually explicit and eliminates a class of
  potential bugs from mismatched override/revert calls.

  (1) Basic credential guard (with_ovl_creds)
  (2) Creator credential guard (ovl_override_creator_creds):

      Introduced a specialized guard for file creation operations that handles
      the two-phase credential override (mounter credentials, then fs{g,u}id
      override). The new pattern is much clearer:

      with_ovl_creds(dentry->d_sb) {
              scoped_class(prepare_creds_ovl, cred, dentry, inode, mode) {
                      if (IS_ERR(cred))
                              return PTR_ERR(cred);
                      /* creation operations */
              }
      }

  (3) Copy-up credential guard (ovl_cu_creds):

      Introduced a specialized guard for copy-up operations, simplifying the
      previous struct ovl_cu_creds helper and associated functions.

      Ported ovl_copy_up_workdir() and ovl_copy_up_tmpfile() to this pattern.

Cleanups

- Remove ovl_revert_creds() after all callers converted to guards

- Remove struct ovl_cu_creds and associated functions

- Drop ovl_setup_cred_for_create() after conversion

- Refactor ovl_fill_super(), ovl_lookup(), ovl_iterate(), ovl_rename()
  for cleaner credential guard scope

- Introduce struct ovl_renamedata to simplify rename handling

- Don't override credentials for ovl_check_whiteouts() (unnecessary)

- Remove unneeded semicolon

Dependencies

- Directory locking changes

- Kbuild -fms-extensions support

- Kernel credential guard infrastructure

/* 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
================================

The following changes since commit dcb6fa37fd7bc9c3d2b066329b0d27dedf8becaa:

  Linux 6.18-rc3 (2025-10-26 15:59:49 -0700)

are available in the Git repository at:

  git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/vfs-6.19-rc1.ovl

for you to fetch changes up to 2579e21be532457742d4100bbda1c2a5b81cbdef:

  ovl: remove unneeded semicolon (2025-11-28 11:05:52 +0100)

Please consider pulling these changes from the signed vfs-6.19-rc1.ovl tag.

Thanks!
Christian

----------------------------------------------------------------
vfs-6.19-rc1.ovl

----------------------------------------------------------------
Chen Ni (1):
      ovl: remove unneeded semicolon

Christian Brauner (99):
      cleanup: fix scoped_class()
      cred: add kernel_cred() helper
      cred: make init_cred static
      cred: add scoped_with_kernel_creds()
      firmware: don't copy kernel creds
      nbd: don't copy kernel creds
      target: don't copy kernel creds
      unix: don't copy creds
      Merge patch series "creds: add {scoped_}with_kernel_creds()"
      cred: add scoped_with_creds() guards
      aio: use credential guards
      backing-file: use credential guards for reads
      backing-file: use credential guards for writes
      backing-file: use credential guards for splice read
      backing-file: use credential guards for splice write
      backing-file: use credential guards for mmap
      binfmt_misc: use credential guards
      erofs: use credential guards
      nfs: use credential guards in nfs_local_call_read()
      nfs: use credential guards in nfs_local_call_write()
      nfs: use credential guards in nfs_idmap_get_key()
      smb: use credential guards in cifs_get_spnego_key()
      act: use credential guards in acct_write_process()
      cgroup: use credential guards in cgroup_attach_permissions()
      net/dns_resolver: use credential guards in dns_query()
      Merge patch series "credentials guards: the easy cases"
      cred: add prepare credential guard
      sev-dev: use guard for path
      sev-dev: use prepare credential guard
      sev-dev: use override credential guards
      coredump: move revert_cred() before coredump_cleanup()
      coredump: pass struct linux_binfmt as const
      coredump: mark struct mm_struct as const
      coredump: split out do_coredump() from vfs_coredump()
      coredump: use prepare credential guard
      coredump: use override credential guard
      trace: use prepare credential guard
      trace: use override credential guard
      Merge patch series "credential guards: credential preparation"
      Merge patch "kbuild: Add '-fms-extensions' to areas with dedicated CFLAGS"
      Merge patch series "Create and use APIs to centralise locking for directory ops."
      Merge branch 'kbuild-6.19.fms.extension'
      Merge branch 'vfs-6.19.directory.locking' into base.vfs-6.19.ovl
      ovl: add override_creds cleanup guard extension for overlayfs
      ovl: port ovl_copy_up_flags() to cred guards
      ovl: port ovl_create_or_link() to cred guard
      ovl: port ovl_set_link_redirect() to cred guard
      ovl: port ovl_do_remove() to cred guard
      ovl: port ovl_create_tmpfile() to cred guard
      ovl: port ovl_open_realfile() to cred guard
      ovl: port ovl_llseek() to cred guard
      ovl: port ovl_fsync() to cred guard
      ovl: port ovl_fallocate() to cred guard
      ovl: port ovl_fadvise() to cred guard
      ovl: port ovl_flush() to cred guard
      ovl: port ovl_setattr() to cred guard
      ovl: port ovl_getattr() to cred guard
      ovl: port ovl_permission() to cred guard
      ovl: port ovl_get_link() to cred guard
      ovl: port do_ovl_get_acl() to cred guard
      ovl: port ovl_set_or_remove_acl() to cred guard
      ovl: port ovl_fiemap() to cred guard
      ovl: port ovl_fileattr_set() to cred guard
      ovl: port ovl_fileattr_get() to cred guard
      ovl: port ovl_maybe_validate_verity() to cred guard
      ovl: port ovl_maybe_lookup_lowerdata() to cred guard
      ovl: don't override credentials for ovl_check_whiteouts()
      ovl: refactor ovl_iterate() and port to cred guard
      ovl: port ovl_dir_llseek() to cred guard
      ovl: port ovl_check_empty_dir() to cred guard
      ovl: port ovl_nlink_start() to cred guard
      ovl: port ovl_nlink_end() to cred guard
      ovl: port ovl_xattr_set() to cred guard
      ovl: port ovl_xattr_get() to cred guard
      ovl: port ovl_listxattr() to cred guard
      ovl: introduce struct ovl_renamedata
      ovl: refactor ovl_rename()
      ovl: port ovl_rename() to cred guard
      ovl: port ovl_copyfile() to cred guard
      ovl: refactor ovl_lookup()
      ovl: port ovl_lookup() to cred guard
      ovl: port ovl_lower_positive() to cred guard
      ovl: refactor ovl_fill_super()
      ovl: port ovl_fill_super() to cred guard
      ovl: remove ovl_revert_creds()
      Merge patch series "ovl: convert to cred guard"
      ovl: add ovl_override_creator_creds cred guard
      ovl: port ovl_create_tmpfile() to new ovl_override_creator_creds cleanup guard
      ovl: reflow ovl_create_or_link()
      ovl: mark ovl_setup_cred_for_create() as unused temporarily
      ovl: port ovl_create_or_link() to new ovl_override_creator_creds cleanup guard
      ovl: drop ovl_setup_cred_for_create()
      ovl: add copy up credential guard
      ovl: port ovl_copy_up_workdir() to cred guard
      ovl: mark *_cu_creds() as unused temporarily
      ovl: port ovl_copy_up_tmpfile() to cred guard
      ovl: remove struct ovl_cu_creds and associated functions
      Merge patch series "ovl: convert creation credential override to cred guard"
      Merge patch series "ovl: convert copyup credential override to cred guard"

Nathan Chancellor (2):
      jfs: Rename _inline to avoid conflict with clang's '-fms-extensions'
      kbuild: Add '-fms-extensions' to areas with dedicated CFLAGS

NeilBrown (15):
      debugfs: rename end_creating() to debugfs_end_creating()
      VFS: introduce start_dirop() and end_dirop()
      VFS: tidy up do_unlinkat()
      VFS/nfsd/cachefiles/ovl: add start_creating() and end_creating()
      VFS/nfsd/cachefiles/ovl: introduce start_removing() and end_removing()
      VFS: introduce start_creating_noperm() and start_removing_noperm()
      smb/server: use end_removing_noperm for for target of smb2_create_link()
      VFS: introduce start_removing_dentry()
      VFS: add start_creating_killable() and start_removing_killable()
      VFS/nfsd/ovl: introduce start_renaming() and end_renaming()
      VFS/ovl/smb: introduce start_renaming_dentry()
      Add start_renaming_two_dentries()
      ecryptfs: use new start_creating/start_removing APIs
      VFS: change vfs_mkdir() to unlock on failure.
      VFS: introduce end_creating_keep()

Rasmus Villemoes (1):
      Kbuild: enable -fms-extensions

 Documentation/filesystems/porting.rst |  13 +
 Makefile                              |   3 +
 arch/arm64/kernel/vdso32/Makefile     |   3 +-
 arch/loongarch/vdso/Makefile          |   2 +-
 arch/parisc/boot/compressed/Makefile  |   2 +-
 arch/powerpc/boot/Makefile            |   3 +-
 arch/s390/Makefile                    |   3 +-
 arch/s390/purgatory/Makefile          |   3 +-
 arch/x86/Makefile                     |   4 +-
 arch/x86/boot/compressed/Makefile     |   7 +-
 drivers/base/firmware_loader/main.c   |  59 ++-
 drivers/block/nbd.c                   |  54 +--
 drivers/crypto/ccp/sev-dev.c          |  17 +-
 drivers/firmware/efi/libstub/Makefile |   4 +-
 drivers/target/target_core_configfs.c |  14 +-
 fs/aio.c                              |   6 +-
 fs/backing-file.c                     | 147 +++----
 fs/binfmt_misc.c                      |   7 +-
 fs/btrfs/ioctl.c                      |  41 +-
 fs/cachefiles/interface.c             |  11 +-
 fs/cachefiles/namei.c                 |  96 +++--
 fs/cachefiles/volume.c                |   9 +-
 fs/coredump.c                         | 142 +++----
 fs/debugfs/inode.c                    |  74 ++--
 fs/ecryptfs/inode.c                   | 153 ++++---
 fs/erofs/fileio.c                     |   6 +-
 fs/fuse/dir.c                         |  19 +-
 fs/internal.h                         |   3 +
 fs/jfs/jfs_incore.h                   |   6 +-
 fs/libfs.c                            |  36 +-
 fs/namei.c                            | 747 +++++++++++++++++++++++++++++-----
 fs/nfs/localio.c                      |  59 +--
 fs/nfs/nfs4idmap.c                    |   7 +-
 fs/nfsd/nfs3proc.c                    |  14 +-
 fs/nfsd/nfs4proc.c                    |  14 +-
 fs/nfsd/nfs4recover.c                 |  34 +-
 fs/nfsd/nfsproc.c                     |  11 +-
 fs/nfsd/vfs.c                         | 151 +++----
 fs/overlayfs/copy_up.c                | 143 +++----
 fs/overlayfs/dir.c                    | 585 +++++++++++++-------------
 fs/overlayfs/file.c                   |  97 ++---
 fs/overlayfs/inode.c                  | 118 +++---
 fs/overlayfs/namei.c                  | 402 +++++++++---------
 fs/overlayfs/overlayfs.h              |  53 ++-
 fs/overlayfs/readdir.c                | 110 ++---
 fs/overlayfs/super.c                  | 138 +++----
 fs/overlayfs/util.c                   |  29 +-
 fs/overlayfs/xattrs.c                 |  35 +-
 fs/smb/client/cifs_spnego.c           |   6 +-
 fs/smb/server/smb2pdu.c               |   6 +-
 fs/smb/server/vfs.c                   | 114 ++----
 fs/smb/server/vfs.h                   |   8 +-
 fs/xfs/scrub/orphanage.c              |  11 +-
 include/linux/cleanup.h               |  15 +-
 include/linux/cred.h                  |  22 +
 include/linux/fs.h                    |   2 +
 include/linux/init_task.h             |   1 -
 include/linux/namei.h                 |  82 ++++
 include/linux/sched/coredump.h        |   2 +-
 init/init_task.c                      |  27 ++
 ipc/mqueue.c                          |  32 +-
 kernel/acct.c                         |  29 +-
 kernel/cgroup/cgroup.c                |  10 +-
 kernel/cred.c                         |  27 --
 kernel/trace/trace_events_user.c      |  22 +-
 net/dns_resolver/dns_query.c          |   6 +-
 net/unix/af_unix.c                    |  17 +-
 scripts/Makefile.extrawarn            |   4 +-
 security/apparmor/apparmorfs.c        |   8 +-
 security/keys/process_keys.c          |   2 +-
 security/selinux/selinuxfs.c          |  15 +-
 71 files changed, 2276 insertions(+), 1886 deletions(-)
[GIT PULL 15/17 for v6.19] autofs
Posted by Christian Brauner 3 days, 4 hours ago
Hey Linus,

/* Summary */
Prevent Futile Mount Triggers in Private Mount Namespaces

Fix a problematic loop in autofs when a mount namespace contains autofs
mounts that are propagation private and there is no namespace-specific
automount daemon to handle possible automounting.

Previously, attempted path resolution would loop until MAXSYMLINKS was
reached before failing, causing significant noise in the log.

The fix adds a check in autofs ->d_automount() so that the VFS can
immediately return EPERM in this case. Since the mount is propagation
private, EPERM is the most appropriate error code.

/* 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/20251121153059.48e3d2fa@canb.auug.org.au

The following changes since commit 3a8660878839faadb4f1a6dd72c3179c1df56787:

  Linux 6.18-rc1 (2025-10-12 13:42:36 -0700)

are available in the Git repository at:

  git@gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs tags/vfs-6.19-rc1.autofs

for you to fetch changes up to 922a6f34c1756d2b0c35d9b2d915b8af19e85965:

  autofs: dont trigger mount if it cant succeed (2025-11-19 11:14:02 +0100)

Please consider pulling these changes from the signed vfs-6.19-rc1.autofs tag.

Thanks!
Christian

----------------------------------------------------------------
vfs-6.19-rc1.autofs

----------------------------------------------------------------
Ian Kent (1):
      autofs: dont trigger mount if it cant succeed

 fs/autofs/autofs_i.h  | 5 +++++
 fs/autofs/dev-ioctl.c | 1 +
 fs/autofs/inode.c     | 1 +
 fs/autofs/root.c      | 8 ++++++++
 fs/namespace.c        | 6 ++++++
 include/linux/fs.h    | 1 +
 6 files changed, 22 insertions(+)