All of lore.kernel.org
 help / color / mirror / Atom feed
From: Al Viro <viro@zeniv.linux.org.uk>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: linux-fsdevel@vger.kernel.org, Christian Brauner <brauner@kernel.org>
Subject: [git pull][6.17] vfs.git 9/9: mount pile
Date: Sat, 26 Jul 2025 09:09:42 +0100	[thread overview]
Message-ID: <20250726080942.GH1456602@ZenIV> (raw)
In-Reply-To: <20250726080119.GA222315@ZenIV>

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

  parent reply	other threads:[~2025-07-26  8:09 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
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 ` Al Viro [this message]
2025-07-28 23:41   ` [git pull][6.17] vfs.git 9/9: mount pile pr-tracker-bot
2025-07-28 23:41 ` [git pull][6.17] vfs.git 1/9: d_flags pile pr-tracker-bot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20250726080942.GH1456602@ZenIV \
    --to=viro@zeniv.linux.org.uk \
    --cc=brauner@kernel.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=torvalds@linux-foundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.