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
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
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(-)
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(-)
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
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
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
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(-)
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%)
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(-)
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(-)
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(-)
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(+)
© 2016 - 2025 Red Hat, Inc.