linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Theodore Ts'o" <tytso@mit.edu>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Konstantin Ryabitsev <konstantin@linuxfoundation.org>,
	Christian Brauner <brauner@kernel.org>,
	Al Viro <viro@zeniv.linux.org.uk>,
	linux-fsdevel@vger.kernel.org, Jan Kara <jack@suse.cz>
Subject: Re: [PATCHED][RFC][CFT] mount-related stuff
Date: Fri, 29 Aug 2025 08:30:33 -0400	[thread overview]
Message-ID: <20250829123033.GA2470272@mit.edu> (raw)
In-Reply-To: <CAHk-=wjcTwA5E7YT8KT6=87nQaJ78A0hqUAVGo9bYRWt9dTe3Q@mail.gmail.com>

On Wed, Aug 27, 2025 at 06:29:50PM -0700, Linus Torvalds wrote:
> On Wed, 27 Aug 2025 at 17:41, Konstantin Ryabitsev
> <konstantin@linuxfoundation.org> wrote:
> >
> > I'm not sure what you mean. The Link: trailer is added when the maintainer
> > pulls in the series into their tree.
> 
> That's my point. Adding it to the commit at that point is entirely
> useless, because
> 
>  (a) that email doesn't have the *reason* for the patch (or rather, if
> it does, then the link to the email is pointless, since the *real*
> reason was mentioned already)

From a maintainer's perspective, the reason why I keep the link in is
because I'm dumb-ass lazy.  My workflow involves looking at patchwork,
cutting-and-pasting the Message-Id, and then passing it to b4.
Looking through a 20 patch series to figure out which one rates a
Link: trailer, and which one doesn't is a pain in the *ss, and in the
off-chance that there *is* a meaningful and deep discussion, it would
be nice to be able to capture it.  But it might be in patch #4; or
patch #12; or patches #14 and #15.  Also, there might be an extended
conversation thread in the patch series description (patch #0) and it
would be useful to be able to get a link to it.

So here's a set of feature requests for b4.

(a) It would be cool(tm), if there was a way for b4 to automatically
    detect whether or not there was a reply to a patch at the time that
    "b4 am" is run; if there is, to include the patch series.  If there
    isn't an e-mail reply, skip the the Link: trailer.

(b) In the case of a patch series, it would be useful to include some
    kind of trailer indicating that a group of patches are logically
    grouped together (maybe a patch-series: that has the message id to
    the the series header, or the first patch if there is no patch #0)
    --- because one of the other ways that I figure out that a series
    of commits are part of a patch series is by looking at the Link:
    field since if the messages are generated using "git send-email"
    it's usually obvious from the message id.  This has also come up
    from some of the folks who want this for their web-based review
    systems.  I don't care about that, but if it solves multiple use
    cases at once, that's great.

(c) Include a link tag to the patch series description e-mail message
    (if present) in the first commit of the patch series so it's
    possible to read the patch #0 description of the patch series,
    since otherwise this can get be hard to find in the git history.

(d) For bonus points, if there is a way to determine a link to the
    previous versions of the patch series, it would be useful for to
    incude link: tags to previous versions of the patch if and only if
    there were e-mail comments to say, the v5, v12, and v27 versions
    of the patch.

(e) If there is some way we can easily capture lore.kernel.org URL for
    the vN-1 version of the patch series in the vN commit description
    header, in "b4 prep" that would be *excellent*.  I don't think it
    can do this today, but if it can, can we make sure it's defaulted
    to on, and then we should **really** market the heck out of b4
    prep?

The bottom line is I'd love to make Linus less cranky; but I'd also love
it if I didn't have to do the extra work by hand.  :-)   Because if I do
have to do it by hand, I will probably screw up, and my preference has
been to err on the side of having the link, so it's there when I'm
having to code code archeology --- even if most of the time it's not
strictly speaking necessary.

Cheers,

      	       	       	      	    	 - Ted

  reply	other threads:[~2025-08-29 12:30 UTC|newest]

Thread overview: 326+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-08-25  4:40 [PATCHED][RFC][CFT] mount-related stuff Al Viro
2025-08-25  4:43 ` [PATCH 01/52] fs/namespace.c: fix the namespace_sem guard mess Al Viro
2025-08-25  4:43   ` [PATCH 02/52] introduced guards for mount_lock Al Viro
2025-08-25 12:32     ` Christian Brauner
2025-08-25 13:46       ` Al Viro
2025-08-25 20:21         ` Al Viro
2025-08-25 23:44           ` Al Viro
2025-08-26  1:44             ` Al Viro
2025-08-26 15:17           ` Askar Safin
2025-08-26 15:45             ` Al Viro
2025-08-25  4:43   ` [PATCH 03/52] fs/namespace.c: allow to drop vfsmount references via __free(mntput) Al Viro
2025-08-25 12:33     ` Christian Brauner
2025-08-25  4:43   ` [PATCH 04/52] __detach_mounts(): use guards Al Viro
2025-08-25 12:33     ` Christian Brauner
2025-08-25  4:43   ` [PATCH 05/52] __is_local_mountpoint(): " Al Viro
2025-08-25 12:33     ` Christian Brauner
2025-08-25  4:43   ` [PATCH 06/52] do_change_type(): " Al Viro
2025-08-25 12:34     ` Christian Brauner
2025-08-25  4:43   ` [PATCH 07/52] do_set_group(): " Al Viro
2025-08-25 12:35     ` Christian Brauner
2025-08-25  4:43   ` [PATCH 08/52] mark_mounts_for_expiry(): " Al Viro
2025-08-25 12:37     ` Christian Brauner
2025-08-25  4:43   ` [PATCH 09/52] put_mnt_ns(): " Al Viro
2025-08-25 12:37     ` Christian Brauner
2025-08-25 12:40     ` Christian Brauner
2025-08-25 16:21       ` Al Viro
2025-08-25  4:43   ` [PATCH 10/52] mnt_already_visible(): " Al Viro
2025-08-25 12:39     ` Christian Brauner
2025-08-25  4:43   ` [PATCH 11/52] check_for_nsfs_mounts(): no need to take locks Al Viro
2025-08-25 12:48     ` Christian Brauner
2025-08-25  4:43   ` [PATCH 12/52] propagate_mnt(): use scoped_guard(mount_locked_reader) for mnt_set_mountpoint() Al Viro
2025-08-25 12:49     ` Christian Brauner
2025-08-25  4:43   ` [PATCH 13/52] has_locked_children(): use guards Al Viro
2025-08-25 11:54     ` Linus Torvalds
2025-08-25 17:33       ` Al Viro
2025-08-25 12:49     ` Christian Brauner
2025-08-25  4:43   ` [PATCH 14/52] mnt_set_expiry(): " Al Viro
2025-08-25 12:51     ` Christian Brauner
2025-08-25  4:43   ` [PATCH 15/52] path_is_under(): " Al Viro
2025-08-25 12:56     ` Christian Brauner
2025-08-25  4:43   ` [PATCH 16/52] current_chrooted(): don't bother with follow_down_one() Al Viro
2025-08-25 12:57     ` Christian Brauner
2025-08-25  4:43   ` [PATCH 17/52] current_chrooted(): use guards Al Viro
2025-08-25 12:57     ` Christian Brauner
2025-08-25  4:43   ` [PATCH 18/52] do_move_mount(): trim local variables Al Viro
2025-08-25 12:57     ` Christian Brauner
2025-08-25  4:43   ` [PATCH 19/52] do_move_mount(): deal with the checks on old_path early Al Viro
2025-08-25 13:00     ` Christian Brauner
2025-08-25  4:43   ` [PATCH 20/52] move_mount(2): take sanity checks in 'beneath' case into do_lock_mount() Al Viro
2025-08-25 12:10     ` Linus Torvalds
2025-08-25 12:17       ` Linus Torvalds
2025-08-25 13:02     ` Christian Brauner
2025-08-25 16:05       ` Al Viro
2025-08-25  4:43   ` [PATCH 21/52] finish_automount(): simplify the ELOOP check Al Viro
2025-08-25 13:02     ` Christian Brauner
2025-08-25  4:43   ` [PATCH 22/52] do_loopback(): use __free(path_put) to deal with old_path Al Viro
2025-08-25 13:02     ` Christian Brauner
2025-08-25  4:43   ` [PATCH 23/52] pivot_root(2): use __free() to deal with struct path in it Al Viro
2025-08-25 13:03     ` Christian Brauner
2025-08-25  4:43   ` [PATCH 24/52] finish_automount(): take the lock_mount() analogue into a helper Al Viro
2025-08-25 13:08     ` Christian Brauner
2025-08-25  4:43   ` [PATCH 25/52] do_new_mount_rc(): use __free() to deal with dropping mnt on failure Al Viro
2025-08-25 13:29     ` Christian Brauner
2025-08-25 16:09       ` Al Viro
2025-08-26  8:27         ` Christian Brauner
2025-08-26 17:00           ` Al Viro
2025-08-26 17:55             ` Al Viro
2025-08-26 18:21               ` [RFC][PATCH] switch do_new_mount_fc() to using fc_mount() Al Viro
2025-08-27 15:38                 ` Paul Moore
2025-08-25  4:43   ` [PATCH 26/52] finish_automount(): use __free() to deal with dropping mnt on failure Al Viro
2025-08-25 13:09     ` Christian Brauner
2025-08-25  4:43   ` [PATCH 27/52] change calling conventions for lock_mount() et.al Al Viro
2025-08-25  4:43   ` [PATCH 28/52] do_move_mount(): use the parent mount returned by do_lock_mount() Al Viro
2025-08-25  4:43   ` [PATCH 29/52] do_add_mount(): switch to passing pinned_mountpoint instead of mountpoint + path Al Viro
2025-08-25  4:43   ` [PATCH 30/52] graft_tree(), attach_recursive_mnt() - pass pinned_mountpoint Al Viro
2025-08-25  4:43   ` [PATCH 31/52] pivot_root(2): use old_mp.mp->m_dentry instead of old.dentry Al Viro
2025-08-25 13:43     ` Christian Brauner
2025-08-25  4:43   ` [PATCH 32/52] don't bother passing new_path->dentry to can_move_mount_beneath() Al Viro
2025-08-25  4:43   ` [PATCH 33/52] new helper: topmost_overmount() Al Viro
2025-08-25 13:43     ` Christian Brauner
2025-08-25  4:43   ` [PATCH 34/52] do_lock_mount(): don't modify path Al Viro
2025-08-26 14:14     ` Askar Safin
2025-08-25  4:43   ` [PATCH 35/52] constify check_mnt() Al Viro
2025-08-25 13:43     ` Christian Brauner
2025-08-25  4:43   ` [PATCH 36/52] do_mount_setattr(): constify path argument Al Viro
2025-08-25 13:30     ` Christian Brauner
2025-08-25  4:43   ` [PATCH 37/52] do_set_group(): constify path arguments Al Viro
2025-08-25 13:29     ` Christian Brauner
2025-08-25  4:43   ` [PATCH 38/52] drop_collected_paths(): constify arguments Al Viro
2025-08-25 13:31     ` Christian Brauner
2025-08-25  4:43   ` [PATCH 39/52] collect_paths(): constify the return value Al Viro
2025-08-25 13:30     ` Christian Brauner
2025-08-25  4:43   ` [PATCH 40/52] do_move_mount(), vfs_move_mount(), do_move_mount_old(): constify struct path argument(s) Al Viro
2025-08-25 13:30     ` Christian Brauner
2025-08-25  4:43   ` [PATCH 41/52] mnt_warn_timestamp_expiry(): constify struct path argument Al Viro
2025-08-25 13:32     ` Christian Brauner
2025-08-25  4:43   ` [PATCH 42/52] do_new_mount{,_fc}(): " Al Viro
2025-08-25 13:30     ` Christian Brauner
2025-08-25  4:43   ` [PATCH 43/52] do_{loopback,change_type,remount,reconfigure_mnt}(): " Al Viro
2025-08-25 13:31     ` Christian Brauner
2025-08-25  4:43   ` [PATCH 44/52] path_mount(): " Al Viro
2025-08-25 13:32     ` Christian Brauner
2025-08-25  4:43   ` [PATCH 45/52] may_copy_tree(), __do_loopback(): " Al Viro
2025-08-25 13:40     ` Christian Brauner
2025-08-25  4:43   ` [PATCH 46/52] path_umount(): " Al Viro
2025-08-25 13:40     ` Christian Brauner
2025-08-25  4:43   ` [PATCH 47/52] constify can_move_mount_beneath() arguments Al Viro
2025-08-25 13:39     ` Christian Brauner
2025-08-25  4:43   ` [PATCH 48/52] do_move_mount_old(): use __free(path_put) Al Viro
2025-08-25 13:40     ` Christian Brauner
2025-08-25  4:43   ` [PATCH 49/52] do_mount(): " Al Viro
2025-08-25 13:32     ` Christian Brauner
2025-08-25  4:43   ` [PATCH 50/52] umount_tree(): take all victims out of propagation graph at once Al Viro
2025-08-25  4:43   ` [PATCH 51/52] ecryptfs: get rid of pointless mount references in ecryptfs dentries Al Viro
2025-08-25 13:41     ` Christian Brauner
2025-08-25  4:43   ` [PATCH 52/52] fs/namespace.c: sanitize descriptions for {__,}lookup_mnt() Al Viro
2025-08-25 13:42     ` Christian Brauner
2025-08-25 12:30   ` [PATCH 01/52] fs/namespace.c: fix the namespace_sem guard mess Christian Brauner
2025-08-25 12:26 ` [PATCHED][RFC][CFT] mount-related stuff Christian Brauner
2025-08-25 12:43 ` Christian Brauner
2025-08-25 16:11   ` Al Viro
2025-08-25 17:43     ` Al Viro
2025-08-25 20:18       ` Theodore Ts'o
2025-08-26  8:56       ` Christian Brauner
2025-08-27 17:19         ` Linus Torvalds
2025-08-27 17:49           ` Linus Torvalds
2025-08-27 22:49             ` Konstantin Ryabitsev
2025-08-27 23:40               ` Linus Torvalds
2025-08-28  0:41                 ` Konstantin Ryabitsev
2025-08-28  1:00                   ` Al Viro
2025-08-28  1:15                     ` Konstantin Ryabitsev
2025-08-28  1:29                   ` Linus Torvalds
2025-08-29 12:30                     ` Theodore Ts'o [this message]
2025-08-29 18:25                       ` Konstantin Ryabitsev
2025-08-28 23:07 ` [PATCHES v2][RFC][CFT] " Al Viro
2025-08-28 23:07   ` [PATCH v2 01/63] fs/namespace.c: fix the namespace_sem guard mess Al Viro
2025-08-28 23:07     ` [PATCH v2 02/63] introduced guards for mount_lock Al Viro
2025-08-29  9:49       ` Christian Brauner
2025-08-28 23:07     ` [PATCH v2 03/63] fs/namespace.c: allow to drop vfsmount references via __free(mntput) Al Viro
2025-08-28 23:07     ` [PATCH v2 04/63] __detach_mounts(): use guards Al Viro
2025-08-29  9:48       ` Christian Brauner
2025-08-28 23:07     ` [PATCH v2 05/63] __is_local_mountpoint(): " Al Viro
2025-08-28 23:07     ` [PATCH v2 06/63] do_change_type(): " Al Viro
2025-08-28 23:07     ` [PATCH v2 07/63] do_set_group(): " Al Viro
2025-08-28 23:07     ` [PATCH v2 08/63] mark_mounts_for_expiry(): " Al Viro
2025-08-28 23:07     ` [PATCH v2 09/63] put_mnt_ns(): " Al Viro
2025-08-28 23:07     ` [PATCH v2 10/63] mnt_already_visible(): " Al Viro
2025-08-28 23:07     ` [PATCH v2 11/63] check_for_nsfs_mounts(): no need to take locks Al Viro
2025-08-28 23:07     ` [PATCH v2 12/63] propagate_mnt(): use scoped_guard(mount_locked_reader) for mnt_set_mountpoint() Al Viro
2025-08-28 23:07     ` [PATCH v2 13/63] has_locked_children(): use guards Al Viro
2025-08-29  9:49       ` Christian Brauner
2025-08-28 23:07     ` [PATCH v2 14/63] mnt_set_expiry(): " Al Viro
2025-08-29  9:49       ` Christian Brauner
2025-08-28 23:07     ` [PATCH v2 15/63] path_is_under(): " Al Viro
2025-08-28 23:07     ` [PATCH v2 16/63] current_chrooted(): don't bother with follow_down_one() Al Viro
2025-08-28 23:07     ` [PATCH v2 17/63] current_chrooted(): use guards Al Viro
2025-08-28 23:07     ` [PATCH v2 18/63] switch do_new_mount_fc() to fc_mount() Al Viro
2025-08-29  9:53       ` Christian Brauner
2025-08-28 23:07     ` [PATCH v2 19/63] do_move_mount(): trim local variables Al Viro
2025-08-28 23:07     ` [PATCH v2 20/63] do_move_mount(): deal with the checks on old_path early Al Viro
2025-08-28 23:07     ` [PATCH v2 21/63] move_mount(2): take sanity checks in 'beneath' case into do_lock_mount() Al Viro
2025-08-28 23:07     ` [PATCH v2 22/63] finish_automount(): simplify the ELOOP check Al Viro
2025-08-28 23:07     ` [PATCH v2 23/63] do_loopback(): use __free(path_put) to deal with old_path Al Viro
2025-08-28 23:07     ` [PATCH v2 24/63] pivot_root(2): use __free() to deal with struct path in it Al Viro
2025-08-28 23:07     ` [PATCH v2 25/63] finish_automount(): take the lock_mount() analogue into a helper Al Viro
2025-08-28 23:07     ` [PATCH v2 26/63] do_new_mount_rc(): use __free() to deal with dropping mnt on failure Al Viro
2025-09-01 11:34       ` Christian Brauner
2025-08-28 23:07     ` [PATCH v2 27/63] finish_automount(): " Al Viro
2025-08-28 23:07     ` [PATCH v2 28/63] change calling conventions for lock_mount() et.al Al Viro
2025-09-01 11:37       ` Christian Brauner
2025-08-28 23:07     ` [PATCH v2 29/63] do_move_mount(): use the parent mount returned by do_lock_mount() Al Viro
2025-09-01 11:38       ` Christian Brauner
2025-08-28 23:07     ` [PATCH v2 30/63] do_add_mount(): switch to passing pinned_mountpoint instead of mountpoint + path Al Viro
2025-09-01 11:40       ` Christian Brauner
2025-08-28 23:07     ` [PATCH v2 31/63] graft_tree(), attach_recursive_mnt() - pass pinned_mountpoint Al Viro
2025-09-01 11:41       ` Christian Brauner
2025-08-28 23:07     ` [PATCH v2 32/63] pivot_root(2): use old_mp.mp->m_dentry instead of old.dentry Al Viro
2025-08-28 23:07     ` [PATCH v2 33/63] don't bother passing new_path->dentry to can_move_mount_beneath() Al Viro
2025-08-28 23:20       ` Linus Torvalds
2025-08-28 23:39         ` Al Viro
2025-08-28 23:07     ` [PATCH v2 34/63] new helper: topmost_overmount() Al Viro
2025-08-28 23:07     ` [PATCH v2 35/63] do_lock_mount(): don't modify path Al Viro
2025-09-02 10:55       ` Christian Brauner
2025-08-28 23:07     ` [PATCH v2 36/63] constify check_mnt() Al Viro
2025-08-28 23:07     ` [PATCH v2 37/63] do_mount_setattr(): constify path argument Al Viro
2025-08-28 23:07     ` [PATCH v2 38/63] do_set_group(): constify path arguments Al Viro
2025-08-28 23:07     ` [PATCH v2 39/63] drop_collected_paths(): constify arguments Al Viro
2025-08-28 23:07     ` [PATCH v2 40/63] collect_paths(): constify the return value Al Viro
2025-08-28 23:07     ` [PATCH v2 41/63] do_move_mount(), vfs_move_mount(), do_move_mount_old(): constify struct path argument(s) Al Viro
2025-08-28 23:07     ` [PATCH v2 42/63] mnt_warn_timestamp_expiry(): constify struct path argument Al Viro
2025-08-28 23:07     ` [PATCH v2 43/63] do_new_mount{,_fc}(): " Al Viro
2025-08-28 23:07     ` [PATCH v2 44/63] do_{loopback,change_type,remount,reconfigure_mnt}(): " Al Viro
2025-08-28 23:07     ` [PATCH v2 45/63] path_mount(): " Al Viro
2025-08-28 23:07     ` [PATCH v2 46/63] may_copy_tree(), __do_loopback(): " Al Viro
2025-08-28 23:07     ` [PATCH v2 47/63] path_umount(): " Al Viro
2025-08-28 23:07     ` [PATCH v2 48/63] constify can_move_mount_beneath() arguments Al Viro
2025-08-28 23:07     ` [PATCH v2 49/63] do_move_mount_old(): use __free(path_put) Al Viro
2025-08-28 23:07     ` [PATCH v2 50/63] do_mount(): " Al Viro
2025-08-28 23:07     ` [PATCH v2 51/63] umount_tree(): take all victims out of propagation graph at once Al Viro
2025-09-01 11:50       ` Christian Brauner
2025-08-28 23:07     ` [PATCH v2 52/63] ecryptfs: get rid of pointless mount references in ecryptfs dentries Al Viro
2025-08-28 23:07     ` [PATCH v2 53/63] fs/namespace.c: sanitize descriptions for {__,}lookup_mnt() Al Viro
2025-08-28 23:07     ` [PATCH v2 54/63] open_detached_copy(): don't bother with mount_lock_hash() Al Viro
2025-09-01 11:29       ` Christian Brauner
2025-08-28 23:07     ` [PATCH v2 55/63] open_detached_copy(): separate creation of namespace into helper Al Viro
2025-08-29  9:54       ` Christian Brauner
2025-08-28 23:07     ` [PATCH v2 56/63] mnt_ns_tree_remove(): DTRT if mnt_ns had never been added to mnt_ns_list Al Viro
2025-08-29  9:57       ` Christian Brauner
2025-08-28 23:08     ` [PATCH v2 57/63] copy_mnt_ns(): use the regular mechanism for freeing empty mnt_ns on failure Al Viro
2025-08-29  9:56       ` Christian Brauner
2025-08-28 23:08     ` [PATCH v2 58/63] copy_mnt_ns(): use guards Al Viro
2025-09-01 11:43       ` Christian Brauner
2025-08-28 23:08     ` [PATCH v2 59/63] setup_mnt(): primitive for connecting a mount to filesystem Al Viro
2025-08-28 23:08     ` [PATCH v2 60/63] preparations to taking MNT_WRITE_HOLD out of ->mnt_flags Al Viro
2025-08-28 23:08     ` [PATCH v2 61/63] struct mount: relocate MNT_WRITE_HOLD bit Al Viro
2025-08-28 23:31       ` Linus Torvalds
2025-08-29  0:11         ` Al Viro
2025-08-29  0:35           ` Linus Torvalds
2025-08-29  6:03             ` Al Viro
2025-08-29  6:04               ` [59/63] simplify the callers of mnt_unhold_writers() Al Viro
2025-09-01 11:20                 ` Christian Brauner
2025-08-29  6:05               ` [60/63] setup_mnt(): primitive for connecting a mount to filesystem Al Viro
2025-08-29  9:59                 ` Christian Brauner
2025-08-29 16:37                   ` Al Viro
2025-08-30  4:36                     ` Al Viro
2025-08-30  7:33                       ` [RFC] does # really need to be escaped in devnames? Al Viro
2025-08-30 19:40                         ` Linus Torvalds
2025-08-30 20:42                           ` Al Viro
2025-09-02 15:03                           ` Siddhesh Poyarekar
2025-09-02 16:30                             ` Linus Torvalds
2025-09-02 16:39                               ` Siddhesh Poyarekar
2025-09-02 17:48                             ` David Howells
2025-09-02 20:04                               ` Linus Torvalds
2025-09-01 11:17                 ` [60/63] setup_mnt(): primitive for connecting a mount to filesystem Christian Brauner
2025-08-29  6:06               ` [61/63] preparations to taking MNT_WRITE_HOLD out of ->mnt_flags Al Viro
2025-09-01 11:27                 ` Christian Brauner
2025-08-29  6:07               ` [62/63] struct mount: relocate MNT_WRITE_HOLD bit Al Viro
2025-09-01 11:26                 ` Christian Brauner
2025-08-28 23:08     ` [PATCH v2 62/63] simplify the callers of mnt_unhold_writers() Al Viro
2025-08-28 23:08     ` [PATCH v2 63/63] WRITE_HOLD machinery: no need for to bump mount_lock seqcount Al Viro
2025-09-01 11:28       ` Christian Brauner
2025-09-03  4:54   ` [PATCHES v3][RFC][CFT] mount-related stuff Al Viro
2025-09-03  4:54     ` [PATCH v3 01/65] fs/namespace.c: fix the namespace_sem guard mess Al Viro
2025-09-03  4:54       ` [PATCH v3 02/65] introduced guards for mount_lock Al Viro
2025-09-03  4:54       ` [PATCH v3 03/65] fs/namespace.c: allow to drop vfsmount references via __free(mntput) Al Viro
2025-09-03  4:54       ` [PATCH v3 04/65] __detach_mounts(): use guards Al Viro
2025-09-03  4:54       ` [PATCH v3 05/65] __is_local_mountpoint(): " Al Viro
2025-09-03  4:54       ` [PATCH v3 06/65] do_change_type(): " Al Viro
2025-09-03  4:54       ` [PATCH v3 07/65] do_set_group(): " Al Viro
2025-09-03  4:54       ` [PATCH v3 08/65] mark_mounts_for_expiry(): " Al Viro
2025-09-03  4:54       ` [PATCH v3 09/65] put_mnt_ns(): " Al Viro
2025-09-03  4:54       ` [PATCH v3 10/65] mnt_already_visible(): " Al Viro
2025-09-03  4:54       ` [PATCH v3 11/65] check_for_nsfs_mounts(): no need to take locks Al Viro
2025-09-03  4:54       ` [PATCH v3 12/65] propagate_mnt(): use scoped_guard(mount_locked_reader) for mnt_set_mountpoint() Al Viro
2025-09-03  4:54       ` [PATCH v3 13/65] has_locked_children(): use guards Al Viro
2025-09-03  4:54       ` [PATCH v3 14/65] mnt_set_expiry(): " Al Viro
2025-09-03  4:54       ` [PATCH v3 15/65] path_is_under(): " Al Viro
2025-09-03  4:54       ` [PATCH v3 16/65] current_chrooted(): don't bother with follow_down_one() Al Viro
2025-09-03  4:54       ` [PATCH v3 17/65] current_chrooted(): use guards Al Viro
2025-09-03  4:54       ` [PATCH v3 18/65] switch do_new_mount_fc() to fc_mount() Al Viro
2025-09-03  4:54       ` [PATCH v3 19/65] do_move_mount(): trim local variables Al Viro
2025-09-03  4:54       ` [PATCH v3 20/65] do_move_mount(): deal with the checks on old_path early Al Viro
2025-09-03  4:54       ` [PATCH v3 21/65] move_mount(2): take sanity checks in 'beneath' case into do_lock_mount() Al Viro
2025-09-03  4:54       ` [PATCH v3 22/65] finish_automount(): simplify the ELOOP check Al Viro
2025-09-03  4:54       ` [PATCH v3 23/65] do_loopback(): use __free(path_put) to deal with old_path Al Viro
2025-09-03  4:54       ` [PATCH v3 24/65] pivot_root(2): use __free() to deal with struct path in it Al Viro
2025-09-03  4:54       ` [PATCH v3 25/65] finish_automount(): take the lock_mount() analogue into a helper Al Viro
2025-09-03  4:54       ` [PATCH v3 26/65] do_new_mount_fc(): use __free() to deal with dropping mnt on failure Al Viro
2025-09-03  4:54       ` [PATCH v3 26/63] do_new_mount_rc(): " Al Viro
2025-09-03  4:54       ` [PATCH v3 27/65] finish_automount(): " Al Viro
2025-09-03  4:54       ` [PATCH v3 28/65] change calling conventions for lock_mount() et.al Al Viro
2025-09-03  4:54       ` [PATCH v3 29/65] do_move_mount(): use the parent mount returned by do_lock_mount() Al Viro
2025-09-03  4:54       ` [PATCH v3 30/65] do_add_mount(): switch to passing pinned_mountpoint instead of mountpoint + path Al Viro
2025-09-03  4:54       ` [PATCH v3 31/65] graft_tree(), attach_recursive_mnt() - pass pinned_mountpoint Al Viro
2025-09-03  4:54       ` [PATCH v3 32/65] pivot_root(2): use old_mp.mp->m_dentry instead of old.dentry Al Viro
2025-09-03  4:54       ` [PATCH v3 33/65] don't bother passing new_path->dentry to can_move_mount_beneath() Al Viro
2025-09-03  4:54       ` [PATCH v3 34/65] new helper: topmost_overmount() Al Viro
2025-09-03  4:54       ` [PATCH v3 35/65] do_lock_mount(): don't modify path Al Viro
2025-09-03  4:54       ` [PATCH v3 36/65] constify check_mnt() Al Viro
2025-09-03  4:54       ` [PATCH v3 37/65] do_mount_setattr(): constify path argument Al Viro
2025-09-03  4:55       ` [PATCH v3 38/65] do_set_group(): constify path arguments Al Viro
2025-09-03  4:55       ` [PATCH v3 39/65] drop_collected_paths(): constify arguments Al Viro
2025-09-03  4:55       ` [PATCH v3 40/65] collect_paths(): constify the return value Al Viro
2025-09-03  4:55       ` [PATCH v3 41/65] do_move_mount(), vfs_move_mount(), do_move_mount_old(): constify struct path argument(s) Al Viro
2025-09-03  4:55       ` [PATCH v3 42/65] mnt_warn_timestamp_expiry(): constify struct path argument Al Viro
2025-09-03  4:55       ` [PATCH v3 43/65] do_new_mount{,_fc}(): " Al Viro
2025-09-03  4:55       ` [PATCH v3 44/65] do_{loopback,change_type,remount,reconfigure_mnt}(): " Al Viro
2025-09-03  4:55       ` [PATCH v3 45/65] path_mount(): " Al Viro
2025-09-03  4:55       ` [PATCH v3 46/65] may_copy_tree(), __do_loopback(): " Al Viro
2025-09-03  4:55       ` [PATCH v3 47/65] path_umount(): " Al Viro
2025-09-03  4:55       ` [PATCH v3 48/65] constify can_move_mount_beneath() arguments Al Viro
2025-09-03  4:55       ` [PATCH v3 49/65] do_move_mount_old(): use __free(path_put) Al Viro
2025-09-03  4:55       ` [PATCH v3 50/65] do_mount(): " Al Viro
2025-09-03  4:55       ` [PATCH v3 51/65] umount_tree(): take all victims out of propagation graph at once Al Viro
2025-09-03  4:55       ` [PATCH v3 52/65] ecryptfs: get rid of pointless mount references in ecryptfs dentries Al Viro
2025-09-03  4:55       ` [PATCH v3 53/65] fs/namespace.c: sanitize descriptions for {__,}lookup_mnt() Al Viro
2025-09-03  4:55       ` [PATCH v3 54/63] open_detached_copy(): don't bother with mount_lock_hash() Al Viro
2025-09-03  4:55       ` [PATCH v3 54/65] path_has_submounts(): use guard(mount_locked_reader) Al Viro
2025-09-03  4:55       ` [PATCH v3 55/65] open_detached_copy(): don't bother with mount_lock_hash() Al Viro
2025-09-03  4:55       ` [PATCH v3 55/63] open_detached_copy(): separate creation of namespace into helper Al Viro
2025-09-03  4:55       ` [PATCH v3 56/63] mnt_ns_tree_remove(): DTRT if mnt_ns had never been added to mnt_ns_list Al Viro
2025-09-03  4:55       ` [PATCH v3 56/65] open_detached_copy(): separate creation of namespace into helper Al Viro
2025-09-03  4:55       ` [PATCH v3 57/63] copy_mnt_ns(): use the regular mechanism for freeing empty mnt_ns on failure Al Viro
2025-09-03  4:55       ` [PATCH v3 57/65] mnt_ns_tree_remove(): DTRT if mnt_ns had never been added to mnt_ns_list Al Viro
2025-09-03  4:55       ` [PATCH v3 58/63] copy_mnt_ns(): use guards Al Viro
2025-09-03  4:55       ` [PATCH v3 58/65] copy_mnt_ns(): use the regular mechanism for freeing empty mnt_ns on failure Al Viro
2025-09-03  4:55       ` [PATCH v3 59/65] copy_mnt_ns(): use guards Al Viro
2025-09-03  4:55       ` [PATCH v3 59/63] simplify the callers of mnt_unhold_writers() Al Viro
2025-09-03  4:55       ` [PATCH v3 60/63] setup_mnt(): primitive for connecting a mount to filesystem Al Viro
2025-09-03  4:55       ` [PATCH v3 60/65] simplify the callers of mnt_unhold_writers() Al Viro
2025-09-03  4:55       ` [PATCH v3 61/63] preparations to taking MNT_WRITE_HOLD out of ->mnt_flags Al Viro
2025-09-03  4:55       ` [PATCH v3 61/65] setup_mnt(): primitive for connecting a mount to filesystem Al Viro
2025-09-03  4:55       ` [PATCH v3 62/65] preparations to taking MNT_WRITE_HOLD out of ->mnt_flags Al Viro
2025-09-03  4:55       ` [PATCH v3 62/63] struct mount: relocate MNT_WRITE_HOLD bit Al Viro
2025-09-03  4:55       ` [PATCH v3 63/65] " Al Viro
2025-09-03  4:55       ` [PATCH v3 63/63] WRITE_HOLD machinery: no need for to bump mount_lock seqcount Al Viro
2025-09-03  4:55       ` [PATCH v3 64/65] " Al Viro
2025-09-03  4:55       ` [PATCH v3 65/65] constify {__,}mnt_is_readonly() Al Viro
2025-09-03  5:08     ` [PATCHES v3][RFC][CFT] mount-related stuff Al Viro
2025-09-03 14:47     ` Linus Torvalds
2025-09-03 18:14       ` Al Viro
2025-09-04  0:17         ` Dave Chinner
2025-09-04  3:20           ` Al Viro
2025-09-04  5:55             ` Al Viro
2025-09-04 12:18               ` Al Viro
2025-09-04 18:59                 ` Linus Torvalds

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=20250829123033.GA2470272@mit.edu \
    --to=tytso@mit.edu \
    --cc=brauner@kernel.org \
    --cc=jack@suse.cz \
    --cc=konstantin@linuxfoundation.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=torvalds@linux-foundation.org \
    --cc=viro@zeniv.linux.org.uk \
    /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 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).