linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [git pull][6.17] vfs.git 1/9: d_flags pile
@ 2025-07-26  8:01 Al Viro
  2025-07-26  8:02 ` [git pull][6.17] vfs.git 2/9: simple_recursive_removal Al Viro
                   ` (8 more replies)
  0 siblings, 9 replies; 18+ messages in thread
From: Al Viro @ 2025-07-26  8:01 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-fsdevel, Christian Brauner

[trivial conflict in Documentation/filesystems/porting.rst]

The following changes since commit 19272b37aa4f83ca52bdf9c16d5d81bdd1354494:

  Linux 6.16-rc1 (2025-06-08 13:44:43 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs.git tags/pull-dcache

for you to fetch changes up to a509e7cf622bc7ce3f45b1c7047fc2a5e9bea869:

  configfs: use DCACHE_DONTCACHE (2025-06-11 13:41:05 -0400)

----------------------------------------------------------------
	Current exclusion rules for ->d_flags stores are rather unpleasant.
The basic rules are simple:
	* stores to dentry->d_flags are OK under dentry->d_lock.
	* stores to dentry->d_flags are OK in the dentry constructor, before
becomes potentially visible to other threads.
Unfortunately, there's a couple of exceptions to that, and that's where the
headache comes from.

	Main PITA comes from d_set_d_op(); that primitive sets ->d_op
of dentry and adjusts the flags that correspond to presence of individual
methods.  It's very easy to misuse; existing uses _are_ safe, but proof
of correctness is brittle.

	Use in __d_alloc() is safe (we are within a constructor), but we
might as well precalculate the initial value of ->d_flags when we set
the default ->d_op for given superblock and set ->d_flags directly
instead of messing with that helper.

	The reasons why other uses are safe are bloody convoluted; I'm not going
to reproduce it here.  See https://lore.kernel.org/all/20250224010624.GT1977892@ZenIV/
for gory details, if you care.  The critical part is using d_set_d_op() only
just prior to d_splice_alias(), which makes a combination of d_splice_alias()
with setting ->d_op, etc. a natural replacement primitive.  Better yet, if
we go that way, it's easy to take setting ->d_op and modifying ->d_flags
under ->d_lock, which eliminates the headache as far as ->d_flags exclusion
rules are concerned.  Other exceptions are minor and easy to deal with.

	What this series does:
* d_set_d_op() is no longer available; new primitive (d_splice_alias_ops())
is provided, equivalent to combination of d_set_d_op() and d_splice_alias().
* new field of struct super_block - ->s_d_flags.  Default value of ->d_flags
to be used when allocating dentries on this filesystem.
* new primitive for setting ->s_d_op: set_default_d_op().  Replaces stores
to ->s_d_op at mount time.  All in-tree filesystems converted; out-of-tree
ones will get caught by compiler (->s_d_op is renamed, so stores to it will
be caught).  ->s_d_flags is set by the same primitive to match the ->s_d_op.
* a lot of filesystems had ->s_d_op->d_delete equal to always_delete_dentry;
that is equivalent to setting DCACHE_DONTCACHE in ->d_flags, so such filesystems
can bloody well set that bit in ->s_d_flags and drop ->d_delete() from
dentry_operations.  In quite a few cases that results in empty dentry_operations,
which means that we can get rid of those.
* kill simple_dentry_operations - not needed anymore.
* massage d_alloc_parallel() to get rid of the other exception wrt ->d_flags
stores - we can set DCACHE_PAR_LOOKUP as soon as we allocate the new dentry;
no need to delay that until we commit to using the sucker.

As the result, ->d_flags stores are all either under ->d_lock or done before
the dentry becomes visible in any shared data structures.

----------------------------------------------------------------
Al Viro (20):
      d_set_mounted(): we don't need to bump seqcount component of rename_lock
      procfs: kill ->proc_dops
      new helper: d_splice_alias_ops()
      switch procfs from d_set_d_op() to d_splice_alias_ops()
      fuse: no need for special dentry_operations for root dentry
      new helper: set_default_d_op()
      split d_flags calculation out of d_set_d_op()
      correct the set of flags forbidden at d_set_d_op() time
      set_default_d_op(): calculate the matching value for ->d_flags
      simple_lookup(): just set DCACHE_DONTCACHE
      make d_set_d_op() static
      d_alloc_parallel(): set DCACHE_PAR_LOOKUP earlier
      shmem: no dentry retention past the refcount reaching zero
      devpts, sunrpc, hostfs: don't bother with ->d_op
      kill simple_dentry_operations
      ramfs, hugetlbfs, mqueue: set DCACHE_DONTCACHE
      9p: don't bother with always_delete_dentry
      efivarfs: use DCACHE_DONTCACHE instead of always_delete_dentry()
      debugfs: use DCACHE_DONTCACHE
      configfs: use DCACHE_DONTCACHE

Steven Rostedt (1):
      tracefs: Add d_delete to remove negative dentries

 Documentation/filesystems/porting.rst |  18 ++++
 fs/9p/vfs_dentry.c                    |   1 -
 fs/9p/vfs_super.c                     |  10 ++-
 fs/adfs/super.c                       |   2 +-
 fs/affs/super.c                       |   4 +-
 fs/afs/super.c                        |   4 +-
 fs/autofs/inode.c                     |   2 +-
 fs/btrfs/super.c                      |   2 +-
 fs/ceph/super.c                       |   2 +-
 fs/coda/inode.c                       |   2 +-
 fs/configfs/dir.c                     |   1 -
 fs/configfs/mount.c                   |   3 +-
 fs/dcache.c                           | 153 ++++++++++++++++++++--------------
 fs/debugfs/inode.c                    |   4 +-
 fs/devpts/inode.c                     |   2 +-
 fs/ecryptfs/main.c                    |   2 +-
 fs/efivarfs/super.c                   |   4 +-
 fs/exfat/super.c                      |   4 +-
 fs/fat/namei_msdos.c                  |   2 +-
 fs/fat/namei_vfat.c                   |   4 +-
 fs/fuse/dir.c                         |   7 --
 fs/fuse/fuse_i.h                      |   1 -
 fs/fuse/inode.c                       |   6 +-
 fs/gfs2/ops_fstype.c                  |   2 +-
 fs/hfs/super.c                        |   2 +-
 fs/hfsplus/super.c                    |   2 +-
 fs/hostfs/hostfs_kern.c               |   2 +-
 fs/hpfs/super.c                       |   2 +-
 fs/hugetlbfs/inode.c                  |   1 +
 fs/isofs/inode.c                      |   2 +-
 fs/jfs/super.c                        |   2 +-
 fs/kernfs/mount.c                     |   2 +-
 fs/libfs.c                            |  27 +++---
 fs/nfs/super.c                        |   2 +-
 fs/ntfs3/super.c                      |   3 +-
 fs/ocfs2/super.c                      |   2 +-
 fs/orangefs/super.c                   |   2 +-
 fs/overlayfs/super.c                  |   2 +-
 fs/proc/base.c                        |   9 +-
 fs/proc/generic.c                     |  10 ++-
 fs/proc/internal.h                    |   6 +-
 fs/proc/namespaces.c                  |   3 +-
 fs/proc/proc_sysctl.c                 |   7 +-
 fs/ramfs/inode.c                      |   1 +
 fs/smb/client/cifsfs.c                |   4 +-
 fs/tracefs/inode.c                    |  13 ++-
 fs/vboxsf/super.c                     |   2 +-
 include/linux/dcache.h                |   6 +-
 include/linux/fs.h                    |   4 +-
 include/linux/proc_fs.h               |   2 +
 ipc/mqueue.c                          |   1 +
 mm/shmem.c                            |   4 +-
 net/sunrpc/rpc_pipe.c                 |   2 +-
 53 files changed, 210 insertions(+), 159 deletions(-)

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [git pull][6.17] vfs.git 2/9: simple_recursive_removal
  2025-07-26  8:01 [git pull][6.17] vfs.git 1/9: d_flags pile Al Viro
@ 2025-07-26  8:02 ` Al Viro
  2025-07-28 23:41   ` pr-tracker-bot
  2025-07-26  8:03 ` [git pull][6.17] vfs.git 3/9: rpc_pipefs Al Viro
                   ` (7 subsequent siblings)
  8 siblings, 1 reply; 18+ messages in thread
From: Al Viro @ 2025-07-26  8:02 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-fsdevel, Christian Brauner

The following changes since commit 19272b37aa4f83ca52bdf9c16d5d81bdd1354494:

  Linux 6.16-rc1 (2025-06-08 13:44:43 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs.git tags/pull-simple_recursive_removal

for you to fetch changes up to bad356bb50e64170f8af14a00797a04313846aeb:

  functionfs, gadgetfs: use simple_recursive_removal() (2025-07-02 22:36:52 -0400)

----------------------------------------------------------------
        Removing subtrees of kernel filesystems is done in quite a few
places; unfortunately, it's easy to get wrong.  A number of open-coded
attempts are out there, with varying amount of bogosities.

	simple_recursive_removal() had been introduced for doing that with
all precautions needed; it does an equivalent of rm -rf, with sufficient
locking, eviction of anything mounted on top of the subtree, etc.

	This series converts a bunch of open-coded instances to using that.

----------------------------------------------------------------
Al Viro (9):
      simple_recursive_removal(): saner interaction with fsnotify
      better lockdep annotations for simple_recursive_removal()
      add locked_recursive_removal()
      spufs: switch to locked_recursive_removal()
      binfmt_misc: switch to locked_recursive_removal()
      pstore: switch to locked_recursive_removal()
      fuse_ctl: use simple_recursive_removal()
      kill binderfs_remove_file()
      functionfs, gadgetfs: use simple_recursive_removal()

 arch/powerpc/platforms/cell/spufs/inode.c | 49 ++++++-------------------------
 drivers/android/binder.c                  |  2 +-
 drivers/android/binder_internal.h         |  2 --
 drivers/android/binderfs.c                | 15 ----------
 drivers/usb/gadget/function/f_fs.c        |  3 +-
 drivers/usb/gadget/legacy/inode.c         |  7 +----
 fs/binfmt_misc.c                          | 44 ++-------------------------
 fs/fuse/control.c                         | 30 ++++++++-----------
 fs/fuse/fuse_i.h                          |  6 ----
 fs/libfs.c                                | 32 ++++++++++++++------
 fs/pstore/inode.c                         |  5 ++--
 include/linux/fs.h                        |  2 ++
 12 files changed, 55 insertions(+), 142 deletions(-)

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [git pull][6.17] vfs.git 3/9: rpc_pipefs
  2025-07-26  8:01 [git pull][6.17] vfs.git 1/9: d_flags pile Al Viro
  2025-07-26  8:02 ` [git pull][6.17] vfs.git 2/9: simple_recursive_removal Al Viro
@ 2025-07-26  8:03 ` Al Viro
  2025-07-28 23:41   ` pr-tracker-bot
  2025-07-26  8:04 ` [git pull][6.17] vfs.git 4/9: asm/param.h pile Al Viro
                   ` (6 subsequent siblings)
  8 siblings, 1 reply; 18+ messages in thread
From: Al Viro @ 2025-07-26  8:03 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-fsdevel, Christian Brauner

[the first couple of commits is shared with #work.simple_recursive_removal]

The following changes since commit 19272b37aa4f83ca52bdf9c16d5d81bdd1354494:

  Linux 6.16-rc1 (2025-06-08 13:44:43 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs.git tags/pull-rpc_pipefs

for you to fetch changes up to 350db61fbeb940502a16e74153ee5954d03622e9:

  rpc_create_client_dir(): return 0 or -E... (2025-07-02 22:44:55 -0400)

----------------------------------------------------------------
Massage rpc_pipefs to use saner primitives and clean up the
APIs provided to the rest of the kernel.

----------------------------------------------------------------
Al Viro (18):
      simple_recursive_removal(): saner interaction with fsnotify
      better lockdep annotations for simple_recursive_removal()
      new helper: simple_start_creating()
      rpc_pipe: clean failure exits in fill_super
      rpc_{rmdir_,}depopulate(): use simple_recursive_removal() instead
      rpc_unlink(): use simple_recursive_removal()
      rpc_populate(): lift cleanup into callers
      rpc_unlink(): saner calling conventions
      rpc_mkpipe_dentry(): saner calling conventions
      rpc_pipe: don't overdo directory locking
      rpc_pipe: saner primitive for creating subdirectories
      rpc_pipe: saner primitive for creating regular files
      rpc_mkpipe_dentry(): switch to simple_start_creating()
      rpc_gssd_dummy_populate(): don't bother with rpc_populate()
      rpc_pipe: expand the calls of rpc_mkdir_populate()
      rpc_new_dir(): the last argument is always NULL
      rpc_create_client_dir(): don't bother with rpc_populate()
      rpc_create_client_dir(): return 0 or -E...

 fs/debugfs/inode.c                 |  21 +-
 fs/libfs.c                         |  34 ++-
 fs/nfs/blocklayout/rpc_pipefs.c    |  53 ++--
 fs/nfs/nfs4idmap.c                 |  14 +-
 fs/nfsd/nfs4recover.c              |  49 ++--
 fs/tracefs/inode.c                 |  15 +-
 include/linux/fs.h                 |   1 +
 include/linux/sunrpc/rpc_pipe_fs.h |   6 +-
 net/sunrpc/auth_gss/auth_gss.c     |  13 +-
 net/sunrpc/clnt.c                  |  36 +--
 net/sunrpc/rpc_pipe.c              | 530 ++++++++++---------------------------
 11 files changed, 230 insertions(+), 542 deletions(-)

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [git pull][6.17] vfs.git 4/9: asm/param.h pile
  2025-07-26  8:01 [git pull][6.17] vfs.git 1/9: d_flags pile Al Viro
  2025-07-26  8:02 ` [git pull][6.17] vfs.git 2/9: simple_recursive_removal Al Viro
  2025-07-26  8:03 ` [git pull][6.17] vfs.git 3/9: rpc_pipefs Al Viro
@ 2025-07-26  8:04 ` Al Viro
  2025-07-28 23:41   ` pr-tracker-bot
  2025-07-26  8:05 ` [git pull][6.17] vfs.git 5/9: securityfs Al Viro
                   ` (5 subsequent siblings)
  8 siblings, 1 reply; 18+ messages in thread
From: Al Viro @ 2025-07-26  8:04 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-fsdevel, Christian Brauner

The following changes since commit 19272b37aa4f83ca52bdf9c16d5d81bdd1354494:

  Linux 6.16-rc1 (2025-06-08 13:44:43 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs.git tags/pull-headers_param

for you to fetch changes up to 2560014ec150fd41b969ea6bcf8a985ae910eea5:

  loongarch, um, xtensa: get rid of generated arch/$ARCH/include/asm/param.h (2025-06-24 22:02:05 -0400)

----------------------------------------------------------------
This series massages asm/param.h to simpler and more uniform shape.
By the end of it,
	* all arch/*/include/uapi/asm/param.h are either generated includes
of <asm-generic/param.h> or a #define or two followed by such include.
	* no arch/*/include/asm/param.h anywhere, generated or not.
	* include <asm/param.h> resolves to arch/*/include/uapi/asm/param.h
of the architecture in question (or that of host in case of uml).
	* include/asm-generic/param.h pulls uapi/asm-generic/param.h and
deals with USER_HZ, CLOCKS_PER_SEC and with HZ redefinition after that.

----------------------------------------------------------------
Al Viro (3):
      xtensa: get rid uapi/asm/param.h
      alpha: regularize the situation with asm/param.h
      loongarch, um, xtensa: get rid of generated arch/$ARCH/include/asm/param.h

 arch/alpha/include/asm/param.h       | 12 ------------
 arch/alpha/include/uapi/asm/param.h  |  9 ++-------
 arch/loongarch/include/asm/Kbuild    |  1 -
 arch/um/include/asm/Kbuild           |  1 -
 arch/xtensa/include/asm/Kbuild       |  1 -
 arch/xtensa/include/uapi/asm/param.h | 31 -------------------------------
 include/asm-generic/param.h          |  2 +-
 include/uapi/asm-generic/param.h     |  6 +++++-
 8 files changed, 8 insertions(+), 55 deletions(-)
 delete mode 100644 arch/alpha/include/asm/param.h
 delete mode 100644 arch/xtensa/include/uapi/asm/param.h

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [git pull][6.17] vfs.git 5/9: securityfs
  2025-07-26  8:01 [git pull][6.17] vfs.git 1/9: d_flags pile Al Viro
                   ` (2 preceding siblings ...)
  2025-07-26  8:04 ` [git pull][6.17] vfs.git 4/9: asm/param.h pile Al Viro
@ 2025-07-26  8:05 ` Al Viro
  2025-07-28 23:41   ` pr-tracker-bot
  2025-07-26  8:05 ` [git pull][6.17] vfs.git 6/9: misc pile Al Viro
                   ` (4 subsequent siblings)
  8 siblings, 1 reply; 18+ messages in thread
From: Al Viro @ 2025-07-26  8:05 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-fsdevel, Christian Brauner

The following changes since commit 19272b37aa4f83ca52bdf9c16d5d81bdd1354494:

  Linux 6.16-rc1 (2025-06-08 13:44:43 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs.git tags/pull-securityfs

for you to fetch changes up to f42b8d78dee77107245ec5beee3eb01915bcae7f:

  tpm: don't bother with removal of files in directory we'll be removing (2025-06-17 18:11:01 -0400)

----------------------------------------------------------------
securityfs cleanups and fixes:

* one extra reference is enough to pin a dentry down; no need
for two.  Switch to regular scheme, similar to shmem, debugfs,
etc. - that fixes securityfs_recursive_remove() dentry leak,
among other things.

* we need to have the filesystem pinned to prevent the contents
disappearing; what we do not need is pinning it for each file.
Doing that only for files and directories in the root is enough.

* the previous two changes allow to get rid of the racy kludges
in efi_secret_unlink(), where we can use simple_unlink() instead
of securityfs_remove().  Which does not require unlocking and
relocking the parent, with all deadlocks that invites.

* Make securityfs_remove() take the entire subtree out, turning
securityfs_recursive_remove() into its alias.  Makes a lot more
sense for callers and fixes a mount leak, while we are at it.

* Making securityfs_remove() remove the entire subtree allows for
much simpler life in most of the users - efi_secret, ima_fs,
evm, ipe, tmp get cleaner.  I hadn't touched apparmor use of
securityfs, but I suspect that it would be useful there as well.

----------------------------------------------------------------
Al Viro (10):
      securityfs: don't pin dentries twice, once is enough...
      securityfs: pin filesystem only for objects directly in root
      fix locking in efi_secret_unlink()
      make securityfs_remove() remove the entire subtree
      efi_secret: clean securityfs use up
      ima_fs: don't bother with removal of files in directory we'll be removing
      ima_fs: get rid of lookup-by-dentry stuff
      evm_secfs: clear securityfs interactions
      ipe: don't bother with removal of files in directory we'll be removing
      tpm: don't bother with removal of files in directory we'll be removing

 drivers/char/tpm/eventlog/common.c        |  46 +++-------
 drivers/virt/coco/efi_secret/efi_secret.c |  47 ++--------
 include/linux/security.h                  |   3 +-
 include/linux/tpm.h                       |   2 +-
 security/inode.c                          |  62 +++++---------
 security/integrity/evm/evm_secfs.c        |  15 ++--
 security/integrity/ima/ima_fs.c           | 137 +++++++-----------------------
 security/ipe/fs.c                         |  32 +++----
 security/ipe/policy_fs.c                  |   4 +-
 9 files changed, 97 insertions(+), 251 deletions(-)

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [git pull][6.17] vfs.git 6/9: misc pile
  2025-07-26  8:01 [git pull][6.17] vfs.git 1/9: d_flags pile Al Viro
                   ` (3 preceding siblings ...)
  2025-07-26  8:05 ` [git pull][6.17] vfs.git 5/9: securityfs Al Viro
@ 2025-07-26  8:05 ` Al Viro
  2025-07-28 23:41   ` pr-tracker-bot
  2025-07-26  8:08 ` [git pull][6.17] vfs.git 7/9: ceph d_name fixes Al Viro
                   ` (3 subsequent siblings)
  8 siblings, 1 reply; 18+ messages in thread
From: Al Viro @ 2025-07-26  8:05 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-fsdevel, Christian Brauner

The following changes since commit 19272b37aa4f83ca52bdf9c16d5d81bdd1354494:

  Linux 6.16-rc1 (2025-06-08 13:44:43 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs.git tags/pull-misc

for you to fetch changes up to 93c73ab1776fc06f3bee91e249026aad2975e8bf:

  gpib: use file_inode() (2025-07-10 01:43:55 -0400)

----------------------------------------------------------------
VFS-related cleanups in various places (mostly of the "that really can't
happen" or "there's a better way to do it" variety)

----------------------------------------------------------------
Al Viro (5):
      landlock: opened file never has a negative dentry
      apparmor: file never has NULL f_path.mnt
      secretmem: move setting O_LARGEFILE and bumping users' count to the place where we create the file
      binder_ioctl_write_read(): simplify control flow a bit
      gpib: use file_inode()

 drivers/android/binder.c              | 20 ++++++--------------
 drivers/staging/gpib/common/gpib_os.c |  2 +-
 mm/secretmem.c                        |  7 +++----
 security/apparmor/file.c              |  2 +-
 security/landlock/syscalls.c          |  1 -
 5 files changed, 11 insertions(+), 21 deletions(-)

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [git pull][6.17] vfs.git 7/9: ceph d_name fixes
  2025-07-26  8:01 [git pull][6.17] vfs.git 1/9: d_flags pile Al Viro
                   ` (4 preceding siblings ...)
  2025-07-26  8:05 ` [git pull][6.17] vfs.git 6/9: misc pile Al Viro
@ 2025-07-26  8:08 ` Al Viro
  2025-07-28 23:41   ` pr-tracker-bot
  2025-07-26  8:08 ` [git pull][6.17] vfs.git 8/9: CLASS(fd) followup Al Viro
                   ` (2 subsequent siblings)
  8 siblings, 1 reply; 18+ messages in thread
From: Al Viro @ 2025-07-26  8:08 UTC (permalink / raw)
  To: Linus Torvalds
  Cc: linux-fsdevel, Christian Brauner, Viacheslav Dubeyko, ceph-devel

stuff that had fallen through the cracks back in February; ceph folks tested
that pile and said they prefer to have it go through my tree...

The following changes since commit 19272b37aa4f83ca52bdf9c16d5d81bdd1354494:

  Linux 6.16-rc1 (2025-06-08 13:44:43 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs.git tags/pull-ceph-d_name-fixes

for you to fetch changes up to 0d2da2561bdeb459b6c540c2417a15c1f8732e6a:

  ceph: fix a race with rename() in ceph_mdsc_build_path() (2025-06-17 17:58:14 -0400)

----------------------------------------------------------------
ceph ->d_name race fixes

----------------------------------------------------------------
Al Viro (3):
      [ceph] parse_longname(): strrchr() expects NUL-terminated string
      prep for ceph_encode_encrypted_fname() fixes
      ceph: fix a race with rename() in ceph_mdsc_build_path()

 fs/ceph/caps.c       | 18 +++++-------
 fs/ceph/crypto.c     | 82 +++++++++++++++++-----------------------------------
 fs/ceph/crypto.h     | 18 +++---------
 fs/ceph/dir.c        |  7 ++---
 fs/ceph/mds_client.c |  4 +--
 5 files changed, 43 insertions(+), 86 deletions(-)

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [git pull][6.17] vfs.git 8/9: CLASS(fd) followup
  2025-07-26  8:01 [git pull][6.17] vfs.git 1/9: d_flags pile Al Viro
                   ` (5 preceding siblings ...)
  2025-07-26  8:08 ` [git pull][6.17] vfs.git 7/9: ceph d_name fixes Al Viro
@ 2025-07-26  8:08 ` Al Viro
  2025-07-28 23:41   ` pr-tracker-bot
  2025-07-26  8:09 ` [git pull][6.17] vfs.git 9/9: mount pile Al Viro
  2025-07-28 23:41 ` [git pull][6.17] vfs.git 1/9: d_flags pile pr-tracker-bot
  8 siblings, 1 reply; 18+ messages in thread
From: Al Viro @ 2025-07-26  8:08 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-fsdevel, Christian Brauner

The following changes since commit d7b8f8e20813f0179d8ef519541a3527e7661d3a:

  Linux 6.16-rc5 (2025-07-06 14:10:26 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs.git tags/pull-fd

for you to fetch changes up to ce23f29e7dfb5320c9e32edb5f4737ad4b732abb:

  mshv_eventfd: convert to CLASS(fd) (2025-07-16 01:45:06 -0400)

----------------------------------------------------------------
A missing bit of 66635b077624 ("assorted variants of irqfd setup:
convert to CLASS(fd)") a year ago - mshv_eventfd would've been
covered by that, but it had forked slightly before that series
and got merged into mainline later.

----------------------------------------------------------------
Al Viro (1):
      mshv_eventfd: convert to CLASS(fd)

 drivers/hv/mshv_eventfd.c | 14 +++-----------
 1 file changed, 3 insertions(+), 11 deletions(-)

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [git pull][6.17] vfs.git 9/9: mount pile
  2025-07-26  8:01 [git pull][6.17] vfs.git 1/9: d_flags pile Al Viro
                   ` (6 preceding siblings ...)
  2025-07-26  8:08 ` [git pull][6.17] vfs.git 8/9: CLASS(fd) followup Al Viro
@ 2025-07-26  8:09 ` Al Viro
  2025-07-28 23:41   ` pr-tracker-bot
  2025-07-28 23:41 ` [git pull][6.17] vfs.git 1/9: d_flags pile pr-tracker-bot
  8 siblings, 1 reply; 18+ messages in thread
From: Al Viro @ 2025-07-26  8:09 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-fsdevel, Christian Brauner

The following changes since commit d0b3b7b22dfa1f4b515fd3a295b3fd958f9e81af:

  Linux 6.16-rc4 (2025-06-29 13:09:04 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs.git tags/pull-mount

for you to fetch changes up to a7cce099450f8fc597a6ac215440666610895fb7:

  statmount_mnt_basic(): simplify the logics for group id (2025-06-29 19:03:46 -0400)

----------------------------------------------------------------
mount changes.  I've got more stuff in the local tree, but
this is getting too much for one merge window as it is.

* mount hash conflicts rudiments are gone now - we do not allow
	multiple mounts with the same parent/mountpoint to be
	hashed at the same time.
* struct mount changes
	mnt_umounting is gone;
	mnt_slave_list/mnt_slave is an hlist now;
	overmounts are kept track of by explicit pointer in mount;
	a bunch of flags moved out of mnt_flags to a new field,
	with only namespace_sem for protection;
	mnt_expiry is protected by mount_lock now (instead of
	namespace_sem);
	MNT_LOCKED is used only for mounts that need to remain
	attached to their parents to prevent mountpoint exposure -
	no more overloading it for absolute roots;
	all mnt_list uses are transient now - it's used only to
	represent temporary sets during umount_tree().
* mount refcounting change
	children no longer pin parents for any mounts, whether they'd
	passed through umount_tree() or not.
* struct mountpoint changes
	refcount is no more; what matters is ->m_list emptiness;
	instead of temporary bumping the refcount, we insert a new object
	(pinned_mountpoint) into ->m_list;
	new calling conventions for lock_mount() and friends.
* do_move_mount()/attach_recursive_mnt() seriously cleaned up.
* globals in fs/pnode.c are gone.
* propagate_mnt(), change_mnt_propagation() and propagate_umount() cleaned up
	(in the last case - pretty much completely rewritten).
* freeing of emptied mnt_namespace is done in namespace_unlock()
	for one thing, there are subtle ordering requirements there;
	for another it simplifies cleanups.
* assorted cleanups.
* restore the machinery for long-term mounts from accumulated bitrot.
	This is going to get a followup come next cycle, when #work.fs_context
	with its change of vfs_fs_parse_string() calling conventions goes
	into -next.

----------------------------------------------------------------
Al Viro (48):
      attach_mnt(): expand in attach_recursive_mnt(), then lose the flag argument
      get rid of mnt_set_mountpoint_beneath()
      prevent mount hash conflicts
      copy_tree(): don't set ->mnt_mountpoint on the root of copy
      constify mnt_has_parent()
      pnode: lift peers() into pnode.h
      new predicate: mount_is_ancestor()
      constify is_local_mountpoint()
      new predicate: anon_ns_root(mount)
      dissolve_on_fput(): use anon_ns_root()
      __attach_mnt(): lose the second argument
      don't set MNT_LOCKED on parentless mounts
      clone_mnt(): simplify the propagation-related logics
      do_umount(): simplify the "is it still mounted" checks
      sanitize handling of long-term internal mounts
      Rewrite of propagate_umount()
      make commit_tree() usable in same-namespace move case
      attach_recursive_mnt(): unify the mnt_change_mountpoint() logics
      attach_recursive_mnt(): pass destination mount in all cases
      attach_recursive_mnt(): get rid of flags entirely
      do_move_mount(): take dropping the old mountpoint into attach_recursive_mnt()
      do_move_mount(): get rid of 'attached' flag
      attach_recursive_mnt(): remove from expiry list on move
      take ->mnt_expire handling under mount_lock [read_seqlock_excl]
      pivot_root(): reorder tree surgeries, collapse unhash_mnt() and put_mountpoint()
      combine __put_mountpoint() with unhash_mnt()
      get rid of mountpoint->m_count
      don't have mounts pin their parents
      mount: separate the flags accessed only under namespace_sem
      propagate_one(): get rid of dest_master
      propagate_mnt(): handle all peer groups in the same loop
      propagate_one(): separate the "do we need secondary here?" logics
      propagate_one(): separate the "what should be the master for this copy" part
      propagate_one(): fold into the sole caller
      fs/pnode.c: get rid of globals
      propagate_mnt(): get rid of last_dest
      propagate_mnt(): fix comment and convert to kernel-doc, while we are at it
      change_mnt_propagation() cleanups, step 1
      change_mnt_propagation(): do_make_slave() is a no-op unless IS_MNT_SHARED()
      do_make_slave(): choose new master sanely
      turn do_make_slave() into transfer_propagation()
      mnt_slave_list/mnt_slave: turn into hlist_head/hlist_node
      change_mnt_propagation(): move ->mnt_master assignment into MS_SLAVE case
      copy_tree(): don't link the mounts via mnt_list
      take freeing of emptied mnt_namespace to namespace_unlock()
      get rid of CL_SHARE_TO_SLAVE
      invent_group_ids(): zero ->mnt_group_id always implies !IS_MNT_SHARED()
      statmount_mnt_basic(): simplify the logics for group id

 Documentation/filesystems/propagate_umount.txt | 484 +++++++++++++++++
 drivers/gpu/drm/i915/gem/i915_gemfs.c          |  21 +-
 drivers/gpu/drm/v3d/v3d_gemfs.c                |  21 +-
 fs/hugetlbfs/inode.c                           |   2 +-
 fs/mount.h                                     |  40 +-
 fs/namespace.c                                 | 711 ++++++++++---------------
 fs/pnode.c                                     | 697 ++++++++++++------------
 fs/pnode.h                                     |  27 +-
 include/linux/mount.h                          |  18 +-
 ipc/mqueue.c                                   |   2 +-
 10 files changed, 1216 insertions(+), 807 deletions(-)
 create mode 100644 Documentation/filesystems/propagate_umount.txt

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [git pull][6.17] vfs.git 1/9: d_flags pile
  2025-07-26  8:01 [git pull][6.17] vfs.git 1/9: d_flags pile Al Viro
                   ` (7 preceding siblings ...)
  2025-07-26  8:09 ` [git pull][6.17] vfs.git 9/9: mount pile Al Viro
@ 2025-07-28 23:41 ` pr-tracker-bot
  8 siblings, 0 replies; 18+ messages in thread
From: pr-tracker-bot @ 2025-07-28 23:41 UTC (permalink / raw)
  To: Al Viro; +Cc: Linus Torvalds, linux-fsdevel, Christian Brauner

The pull request you sent on Sat, 26 Jul 2025 09:01:19 +0100:

> git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs.git tags/pull-dcache

has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/11fe69fbd56f63ad0749303d2e014ef1c17142a6

Thank you!

-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/prtracker.html

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [git pull][6.17] vfs.git 2/9: simple_recursive_removal
  2025-07-26  8:02 ` [git pull][6.17] vfs.git 2/9: simple_recursive_removal Al Viro
@ 2025-07-28 23:41   ` pr-tracker-bot
  0 siblings, 0 replies; 18+ messages in thread
From: pr-tracker-bot @ 2025-07-28 23:41 UTC (permalink / raw)
  To: Al Viro; +Cc: Linus Torvalds, linux-fsdevel, Christian Brauner

The pull request you sent on Sat, 26 Jul 2025 09:02:24 +0100:

> git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs.git tags/pull-simple_recursive_removal

has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/1959e18cc0b842c53836265548e99be8694a11a7

Thank you!

-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/prtracker.html

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [git pull][6.17] vfs.git 3/9: rpc_pipefs
  2025-07-26  8:03 ` [git pull][6.17] vfs.git 3/9: rpc_pipefs Al Viro
@ 2025-07-28 23:41   ` pr-tracker-bot
  0 siblings, 0 replies; 18+ messages in thread
From: pr-tracker-bot @ 2025-07-28 23:41 UTC (permalink / raw)
  To: Al Viro; +Cc: Linus Torvalds, linux-fsdevel, Christian Brauner

The pull request you sent on Sat, 26 Jul 2025 09:03:26 +0100:

> git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs.git tags/pull-rpc_pipefs

has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/ddf52f12ef500d9f2a5e325e0c86449f594abb25

Thank you!

-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/prtracker.html

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [git pull][6.17] vfs.git 4/9: asm/param.h pile
  2025-07-26  8:04 ` [git pull][6.17] vfs.git 4/9: asm/param.h pile Al Viro
@ 2025-07-28 23:41   ` pr-tracker-bot
  0 siblings, 0 replies; 18+ messages in thread
From: pr-tracker-bot @ 2025-07-28 23:41 UTC (permalink / raw)
  To: Al Viro; +Cc: Linus Torvalds, linux-fsdevel, Christian Brauner

The pull request you sent on Sat, 26 Jul 2025 09:04:22 +0100:

> git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs.git tags/pull-headers_param

has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/126e5754e942b1a007246561fc61b745747cedcd

Thank you!

-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/prtracker.html

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [git pull][6.17] vfs.git 5/9: securityfs
  2025-07-26  8:05 ` [git pull][6.17] vfs.git 5/9: securityfs Al Viro
@ 2025-07-28 23:41   ` pr-tracker-bot
  0 siblings, 0 replies; 18+ messages in thread
From: pr-tracker-bot @ 2025-07-28 23:41 UTC (permalink / raw)
  To: Al Viro; +Cc: Linus Torvalds, linux-fsdevel, Christian Brauner

The pull request you sent on Sat, 26 Jul 2025 09:05:13 +0100:

> git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs.git tags/pull-securityfs

has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/8297b790c65d17544d8298cb81a46f67348c6267

Thank you!

-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/prtracker.html

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [git pull][6.17] vfs.git 6/9: misc pile
  2025-07-26  8:05 ` [git pull][6.17] vfs.git 6/9: misc pile Al Viro
@ 2025-07-28 23:41   ` pr-tracker-bot
  0 siblings, 0 replies; 18+ messages in thread
From: pr-tracker-bot @ 2025-07-28 23:41 UTC (permalink / raw)
  To: Al Viro; +Cc: Linus Torvalds, linux-fsdevel, Christian Brauner

The pull request you sent on Sat, 26 Jul 2025 09:05:59 +0100:

> git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs.git tags/pull-misc

has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/2d9c1336edc7d8f8e058822e02c0ce4d126a298e

Thank you!

-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/prtracker.html

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [git pull][6.17] vfs.git 7/9: ceph d_name fixes
  2025-07-26  8:08 ` [git pull][6.17] vfs.git 7/9: ceph d_name fixes Al Viro
@ 2025-07-28 23:41   ` pr-tracker-bot
  0 siblings, 0 replies; 18+ messages in thread
From: pr-tracker-bot @ 2025-07-28 23:41 UTC (permalink / raw)
  To: Al Viro
  Cc: Linus Torvalds, linux-fsdevel, Christian Brauner,
	Viacheslav Dubeyko, ceph-devel

The pull request you sent on Sat, 26 Jul 2025 09:08:05 +0100:

> git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs.git tags/pull-ceph-d_name-fixes

has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/815d3c16280ce289c558255acc4296b36383d1a4

Thank you!

-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/prtracker.html

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [git pull][6.17] vfs.git 8/9: CLASS(fd) followup
  2025-07-26  8:08 ` [git pull][6.17] vfs.git 8/9: CLASS(fd) followup Al Viro
@ 2025-07-28 23:41   ` pr-tracker-bot
  0 siblings, 0 replies; 18+ messages in thread
From: pr-tracker-bot @ 2025-07-28 23:41 UTC (permalink / raw)
  To: Al Viro; +Cc: Linus Torvalds, linux-fsdevel, Christian Brauner

The pull request you sent on Sat, 26 Jul 2025 09:08:53 +0100:

> git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs.git tags/pull-fd

has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/953e117bf4aad7e1d01419d4bcc03ab93420387c

Thank you!

-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/prtracker.html

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [git pull][6.17] vfs.git 9/9: mount pile
  2025-07-26  8:09 ` [git pull][6.17] vfs.git 9/9: mount pile Al Viro
@ 2025-07-28 23:41   ` pr-tracker-bot
  0 siblings, 0 replies; 18+ messages in thread
From: pr-tracker-bot @ 2025-07-28 23:41 UTC (permalink / raw)
  To: Al Viro; +Cc: Linus Torvalds, linux-fsdevel, Christian Brauner

The pull request you sent on Sat, 26 Jul 2025 09:09:42 +0100:

> git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs.git tags/pull-mount

has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/794cbac9c053155754d04231b9365f91ea4ce7d2

Thank you!

-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/prtracker.html

^ permalink raw reply	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2025-07-28 23:40 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-07-26  8:01 [git pull][6.17] vfs.git 1/9: d_flags pile Al Viro
2025-07-26  8:02 ` [git pull][6.17] vfs.git 2/9: simple_recursive_removal Al Viro
2025-07-28 23:41   ` pr-tracker-bot
2025-07-26  8:03 ` [git pull][6.17] vfs.git 3/9: rpc_pipefs Al Viro
2025-07-28 23:41   ` pr-tracker-bot
2025-07-26  8:04 ` [git pull][6.17] vfs.git 4/9: asm/param.h pile Al Viro
2025-07-28 23:41   ` pr-tracker-bot
2025-07-26  8:05 ` [git pull][6.17] vfs.git 5/9: securityfs Al Viro
2025-07-28 23:41   ` pr-tracker-bot
2025-07-26  8:05 ` [git pull][6.17] vfs.git 6/9: misc pile Al Viro
2025-07-28 23:41   ` pr-tracker-bot
2025-07-26  8:08 ` [git pull][6.17] vfs.git 7/9: ceph d_name fixes Al Viro
2025-07-28 23:41   ` pr-tracker-bot
2025-07-26  8:08 ` [git pull][6.17] vfs.git 8/9: CLASS(fd) followup Al Viro
2025-07-28 23:41   ` pr-tracker-bot
2025-07-26  8:09 ` [git pull][6.17] vfs.git 9/9: mount pile Al Viro
2025-07-28 23:41   ` pr-tracker-bot
2025-07-28 23:41 ` [git pull][6.17] vfs.git 1/9: d_flags pile pr-tracker-bot

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).