mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH v4 0/5] Fix easy bits of the negative dentry problem
@ 2026-10-19  0:00 NeilBrown
  2026-10-19  0:00 ` [PATCH v4 1/5] VFS: don't count references through ->d_parent NeilBrown
                   ` (5 more replies)
  0 siblings, 6 replies; 9+ messages in thread
From: NeilBrown @ 2026-10-19  0:00 UTC (permalink / raw)
  To: Alexander Viro, Christian Brauner, Jan Kara, Amir Goldstein
  Cc: linux-fsdevel, linux-kernel, Ian Kent, Jake Edge

For this v4 I decided to focus on just fsnotify, as that is where I've
received the most useful review, and that is where problem reports seem
to focus.

Other places that walk the ->d_children list (and don't already use
cond_resched()) are specific to just one file-system-type.  fsnotify can
affect (almost) any file-system.  So it is reasonable that it gets priority.

So here we just fix the refcount overflow, and the ->d_children walk for
fsnotify.

If/when this lands, I can suggest patches to various file-system maintainers.

Thanks,
NeilBrown


Original intro - revised:

 I was reading about the negative dentry problem in
 https://lwn.net/Articles/1079407/ and thought I would have a go at the
 easy bits.  Given how involved some of that was I'm glad I didn't try
 the tricky bits!

 So I didn't try to reduce the number of negative dentries or handle
 them differently to positive dentries.  I just tried to address
 specific symptoms.

 This series addresses two reported symptoms.
  1/ refcounts on parents can potentially overflow if there are billions
     of (negative) children.  This was the easiest easy bit.  The first
     patch is all that is needed.

  2/ Walking the ->d_children list can take arbitrarily long and can
     trigger soft lockups.  I haven't addresses the "arbitrarily long"
     part, but the "soft lockups" is relatively easy.
     With this in place I would feel more confident addressing
     the "arbitrarily long" part if that seemed worth while.

 The core idea is to use a common helper for all walking of
 ->d_children, and teach it to drop the lock and schedule when needed,
 inserting a cursor to keep its place.  This simple idea requires that
 nothing should be holding any other lock while walking ->d_children


 [PATCH v4 1/5] VFS: don't count references through ->d_parent
 [PATCH v4 2/5] fsnotify: update children flags only when adding mask
 [PATCH v4 3/5] fsnotify: don't hold i_lock while walking d_children
 [PATCH v4 4/5] Add d_for_each_positive_child family of iterators
 [PATCH v4 5/5] Use d_for_each_positive_child() in fsnotify.

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

end of thread, other threads:[~2026-10-20  1:29 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-10-19  0:00 [PATCH v4 0/5] Fix easy bits of the negative dentry problem NeilBrown
2026-10-19  0:00 ` [PATCH v4 1/5] VFS: don't count references through ->d_parent NeilBrown
2026-10-19  0:00 ` [PATCH v4 2/5] fsnotify: update children flags only when adding mask bits NeilBrown
2026-10-19  0:00 ` [PATCH v4 3/5] fsnotify: don't hold i_lock while walking d_children in fsnotify_set_children_dentry_flags() NeilBrown
2026-10-19  0:00 ` [PATCH v4 4/5] Add d_for_each_positive_child family of iterators NeilBrown
2026-10-19  0:00 ` [PATCH v4 5/5] Use d_for_each_positive_child() in fsnotify NeilBrown
2026-10-19  1:59 ` [PATCH v4 0/5] Fix easy bits of the negative dentry problem Ian Kent
2026-10-19  2:29   ` NeilBrown
2026-10-20  1:29     ` Ian Kent

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

all inboxes | Powered by JetHome®