All of lore.kernel.org
 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
                   ` (26 more replies)
  0 siblings, 27 replies; 76+ 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] 76+ messages in thread

end of thread, other threads:[~2026-06-05  5:09 UTC | newest]

Thread overview: 76+ 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
2026-06-05  5:08 ` [PATCH v2 00/22] " Al Viro
2026-06-05  5:08   ` [PATCH v2 01/22] VFS: use wait_var_event for waiting in d_alloc_parallel() Al Viro
2026-06-05  5:08   ` [PATCH v2 02/22] alloc_path_pseudo(): make sure we don't end up with NORCU dentries for directories Al Viro
2026-06-05  5:08   ` [PATCH v2 03/22] fix a race between d_find_any_alias() and final dput() of NORCU dentries Al Viro
2026-06-05  5:08   ` [PATCH v2 04/22] find_acceptable_alias(): skip NORCU aliases with zero refcount Al Viro
2026-06-05  5:08   ` [PATCH v2 05/22] select_collect(): ignore dentries on shrink lists if they have positive refcounts Al Viro
2026-06-05  5:08   ` [PATCH v2 06/22] make to_shrink_list() return whether it has moved dentry to list Al Viro
2026-06-05  5:08   ` [PATCH v2 07/22] kill d_dispose_if_unused() Al Viro
2026-06-05  5:08   ` [PATCH v2 08/22] d_prune_aliases(): make sure to skip NORCU aliases Al Viro
2026-06-05  5:08   ` [PATCH v2 09/22] shrink_dentry_list(): start with removing from shrink list Al Viro
2026-06-05  5:08   ` [PATCH v2 10/22] fold lock_for_kill() into shrink_kill() Al Viro
2026-06-05  5:08   ` [PATCH v2 11/22] fold lock_for_kill() and __dentry_kill() into common helper Al Viro
2026-06-05  5:09   ` [PATCH v2 12/22] simplify safety for lock_for_kill() slowpath Al Viro
2026-06-05  5:09   ` [PATCH v2 13/22] Shift rcu_read_{,un}lock() inside fast_dput() Al Viro
2026-06-05  5:09   ` [PATCH v2 14/22] Document rcu_read_lock() use in select_collect2() Al Viro
2026-06-05  5:09   ` [PATCH v2 15/22] adjust calling conventions of lock_for_kill(), fold __dentry_kill() into dentry_kill() Al Viro
2026-06-05  5:09   ` [PATCH v2 16/22] document dentry_kill() Al Viro
2026-06-05  5:09   ` [PATCH v2 17/22] d_walk(): shrink rcu_read_lock() scope Al Viro
2026-06-05  5:09   ` [PATCH v2 18/22] shrinking rcu_read_lock() scope in d_alloc_parallel() Al Viro
2026-06-05  5:09   ` [PATCH v2 19/22] shrink_dentry_tree(): unify the calls of shrink_dentry_list() Al Viro
2026-06-05  5:09   ` [PATCH v2 20/22] wind ->s_roots via ->d_sib instead of ->d_hash Al Viro
2026-06-05  5:09   ` [PATCH v2 21/22] nfs: get rid of fake root dentries Al Viro
2026-06-05  5:09   ` [PATCH v2 22/22] make cursors NORCU Al Viro

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.