linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCHES][RFC][CFT] simple_recursive_removal() work
@ 2025-06-14  6:00 Al Viro
  2025-06-14  6:02 ` [PATCH 1/8] simple_recursive_removal(): saner interaction with fsnotify Al Viro
  0 siblings, 1 reply; 20+ messages in thread
From: Al Viro @ 2025-06-14  6:00 UTC (permalink / raw)
  To: linux-fsdevel; +Cc: Linus Torvalds, Christian Brauner, NeilBrown

[another part of tree-in-dcache pile pulled into a separate branch]

	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.

	The series below converts a bunch of open-coded instances
to using that.  It's v6.16-rc1-based, lives in
git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs.git #work.simple_recursive_removal
Individual patches in followups.

The first commit is shared with work.rpc_pipe (and several other branches);
the rest has not been posted yet.  If there's no objections, into -next
it goes...

Shortlog:
Al Viro(8)
      simple_recursive_removal(): saner interaction with fsnotify
      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()

Diffstat:
 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                          | 40 +------------------------
 fs/fuse/control.c                         | 30 ++++++++-----------
 fs/fuse/fuse_i.h                          |  6 ----
 fs/libfs.c                                | 29 +++++++++++++-----
 fs/pstore/inode.c                         |  3 +-
 include/linux/fs.h                        |  2 ++
 12 files changed, 50 insertions(+), 138 deletions(-)

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

end of thread, other threads:[~2025-06-17 11:25 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-06-14  6:00 [PATCHES][RFC][CFT] simple_recursive_removal() work Al Viro
2025-06-14  6:02 ` [PATCH 1/8] simple_recursive_removal(): saner interaction with fsnotify Al Viro
2025-06-14  6:02   ` [PATCH 2/8] add locked_recursive_removal() Al Viro
2025-06-16 14:38     ` Christian Brauner
2025-06-14  6:02   ` [PATCH 3/8] spufs: switch to locked_recursive_removal() Al Viro
2025-06-16 14:40     ` Christian Brauner
2025-06-16 19:14       ` Al Viro
2025-06-17 11:25         ` Christian Brauner
2025-06-14  6:02   ` [PATCH 4/8] binfmt_misc: " Al Viro
2025-06-16 14:43     ` Christian Brauner
2025-06-16 19:17       ` Al Viro
2025-06-14  6:02   ` [PATCH 5/8] pstore: " Al Viro
2025-06-16 14:43     ` Christian Brauner
2025-06-14  6:02   ` [PATCH 6/8] fuse_ctl: use simple_recursive_removal() Al Viro
2025-06-16 14:44     ` Christian Brauner
2025-06-14  6:02   ` [PATCH 7/8] kill binderfs_remove_file() Al Viro
2025-06-16 14:45     ` Christian Brauner
2025-06-14  6:02   ` [PATCH 8/8] functionfs, gadgetfs: use simple_recursive_removal() Al Viro
2025-06-16 14:46     ` Christian Brauner
2025-06-16 14:34   ` [PATCH 1/8] simple_recursive_removal(): saner interaction with fsnotify Christian Brauner

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).