Linux filesystem development
 help / color / mirror / Atom feed
* [RFC PATCH 00/25] assorted dcache cleanups and fixes
@ 2026-05-05  5:53 Al Viro
  2026-05-05  5:53 ` [RFC PATCH 01/25] VFS: use wait_var_event for waiting in d_alloc_parallel() Al Viro
                   ` (25 more replies)
  0 siblings, 26 replies; 53+ messages in thread
From: Al Viro @ 2026-05-05  5:53 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-fsdevel, Christian Brauner, Jan Kara, NeilBrown

This series has grown out of trying to prove memory safety
of dentry handling; there are followups sitting in the local
tree, but those are getting reshuffled.

* d_alloc_parallel() API change (Neil's with my changes).
* NORCU fixes.
* Reorganization and simplification of dentry eviction logics.
* Reducing and documenting rcu_read_lock() scopes in fs/dcache.c
* Secondary roots work - getting rid of NFS fake root dentries and
dealing with remaining shrink_dcache_for_umount()/shrink_dentry_list()
races.
* making cursors NORCU (surprisingly easy)

Currently that stuff lives in
git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs.git #work.dcache
individual patches in followups.

Please, review.  It survives the local beating so far, but more testing
is obviously needed.

Al Viro (24):
  alloc_path_pseudo(): make sure we don't end up with NORCU dentries for
    directories
  fix a race between d_find_any_alias() and final dput() of NORCU
    dentries
  find_acceptable_alias(): skip NORCU aliases with zero refcount
  select_collect(): ignore dentries on shrink lists if they have
    positive refcounts
  make to_shrink_list() return whether it has moved dentry to list
  kill d_dispose_if_unused()
  d_prune_aliases(): make sure to skip NORCU aliases
  shrink_dentry_list(): start with removing from shrink list
  fold lock_for_kill() into shrink_kill()
  fold lock_for_kill() and __dentry_kill() into common helper
  reducing rcu_read_lock() scopes in dput and friends, step 1
  reducing rcu_read_lock() scopes in dput and friends, step 2
  reducing rcu_read_lock() scopes in dput and friends, step 3
  reducing rcu_read_lock() scopes in dput and friends, step 4
  reducing rcu_read_lock() scopes in dput and friends, step 5
  reducing rcu_read_lock() scopes in dput and friends, step 6
  adjust calling conventions of lock_for_kill(), fold __dentry_kill()
    into dentry_kill()
  document dentry_kill()
  d_walk(): shrink rcu_read_lock() scope
  shrinking rcu_read_lock() scope in d_alloc_parallel()
  shrink_dentry_tree(): unify the calls of shrink_dentry_list()
  wind ->s_roots via ->d_sib instead of ->d_hash
  nfs: get rid of fake root dentries
  make cursors NORCU

NeilBrown (1):
  VFS: use wait_var_event for waiting in d_alloc_parallel()

 Documentation/filesystems/porting.rst |  17 +
 fs/afs/dir_silly.c                    |   4 +-
 fs/dcache.c                           | 527 +++++++++++++++-----------
 fs/exportfs/expfs.c                   |   9 +-
 fs/file_table.c                       |   2 +
 fs/fuse/dir.c                         |   2 +-
 fs/fuse/readdir.c                     |   3 +-
 fs/namei.c                            |   6 +-
 fs/nfs/dir.c                          |   6 +-
 fs/nfs/getroot.c                      |  35 +-
 fs/nfs/unlink.c                       |   3 +-
 fs/proc/base.c                        |   3 +-
 fs/proc/proc_sysctl.c                 |   3 +-
 fs/smb/client/readdir.c               |   3 +-
 fs/super.c                            |   1 +
 include/linux/dcache.h                |  31 +-
 include/linux/fs/super_types.h        |   3 +-
 include/linux/nfs_xdr.h               |   1 -
 18 files changed, 369 insertions(+), 290 deletions(-)

-- 
2.47.3


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

end of thread, other threads:[~2026-05-08 23:03 UTC | newest]

Thread overview: 53+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-05  5:53 [RFC PATCH 00/25] assorted dcache cleanups and fixes Al Viro
2026-05-05  5:53 ` [RFC PATCH 01/25] VFS: use wait_var_event for waiting in d_alloc_parallel() Al Viro
2026-05-05  5:53 ` [RFC PATCH 02/25] alloc_path_pseudo(): make sure we don't end up with NORCU dentries for directories Al Viro
2026-05-05  8:21   ` NeilBrown
2026-05-05 17:48     ` Al Viro
2026-05-05  5:53 ` [RFC PATCH 03/25] fix a race between d_find_any_alias() and final dput() of NORCU dentries Al Viro
2026-05-05 17:06   ` Linus Torvalds
2026-05-05 20:29     ` Al Viro
2026-05-05  5:53 ` [RFC PATCH 04/25] find_acceptable_alias(): skip NORCU aliases with zero refcount Al Viro
2026-05-05  5:53 ` [RFC PATCH 05/25] select_collect(): ignore dentries on shrink lists if they have positive refcounts Al Viro
2026-05-05  5:53 ` [RFC PATCH 06/25] make to_shrink_list() return whether it has moved dentry to list Al Viro
2026-05-05  5:53 ` [RFC PATCH 07/25] kill d_dispose_if_unused() Al Viro
2026-05-05  5:53 ` [RFC PATCH 08/25] d_prune_aliases(): make sure to skip NORCU aliases Al Viro
2026-05-05  5:53 ` [RFC PATCH 09/25] shrink_dentry_list(): start with removing from shrink list Al Viro
2026-05-07 20:39   ` Al Viro
2026-05-05  5:53 ` [RFC PATCH 10/25] fold lock_for_kill() into shrink_kill() Al Viro
2026-05-05  5:53 ` [RFC PATCH 11/25] fold lock_for_kill() and __dentry_kill() into common helper Al Viro
2026-05-05  5:53 ` [RFC PATCH 12/25] reducing rcu_read_lock() scopes in dput and friends, step 1 Al Viro
2026-05-05  8:55   ` NeilBrown
2026-05-05 14:22     ` Al Viro
2026-05-05 21:58       ` NeilBrown
2026-05-05 16:47   ` Linus Torvalds
2026-05-05 22:42     ` Al Viro
2026-05-07  7:35       ` Al Viro
2026-05-07 15:32         ` Linus Torvalds
2026-05-05  5:54 ` [RFC PATCH 13/25] reducing rcu_read_lock() scopes in dput and friends, step 2 Al Viro
2026-05-05  5:54 ` [RFC PATCH 14/25] reducing rcu_read_lock() scopes in dput and friends, step 3 Al Viro
2026-05-05  5:54 ` [RFC PATCH 15/25] reducing rcu_read_lock() scopes in dput and friends, step 4 Al Viro
2026-05-05  5:54 ` [RFC PATCH 16/25] reducing rcu_read_lock() scopes in dput and friends, step 5 Al Viro
2026-05-05  5:54 ` [RFC PATCH 17/25] reducing rcu_read_lock() scopes in dput and friends, step 6 Al Viro
2026-05-05  5:54 ` [RFC PATCH 18/25] adjust calling conventions of lock_for_kill(), fold __dentry_kill() into dentry_kill() Al Viro
2026-05-05  5:54 ` [RFC PATCH 19/25] document dentry_kill() Al Viro
2026-05-05  5:54 ` [RFC PATCH 20/25] d_walk(): shrink rcu_read_lock() scope Al Viro
2026-05-05 17:01   ` Linus Torvalds
2026-05-05 20:05     ` Al Viro
2026-05-05 21:40       ` Frederic Weisbecker
2026-05-05 22:50         ` Al Viro
2026-05-06  3:49           ` Paul E. McKenney
2026-05-07 22:39             ` NeilBrown
2026-05-07 23:21               ` Paul E. McKenney
2026-05-08 14:47                 ` Al Viro
2026-05-08 22:03                   ` Paul E. McKenney
2026-05-08 23:03                     ` Al Viro
2026-05-08  3:01         ` Al Viro
2026-05-05  5:54 ` [RFC PATCH 21/25] shrinking rcu_read_lock() scope in d_alloc_parallel() Al Viro
2026-05-07 21:52   ` Jori Koolstra
2026-05-08  3:12     ` Al Viro
2026-05-08  9:28       ` Jori Koolstra
2026-05-05  5:54 ` [RFC PATCH 22/25] shrink_dentry_tree(): unify the calls of shrink_dentry_list() Al Viro
2026-05-05  5:54 ` [RFC PATCH 23/25] wind ->s_roots via ->d_sib instead of ->d_hash Al Viro
2026-05-05  5:54 ` [RFC PATCH 24/25] nfs: get rid of fake root dentries Al Viro
2026-05-05  5:54 ` [RFC PATCH 25/25] make cursors NORCU Al Viro
2026-05-05 17:09 ` [RFC PATCH 00/25] assorted dcache cleanups and fixes Linus Torvalds

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox