Messages in this thread | | | From | Linus Torvalds <> | Date | Fri, 16 Feb 2018 14:42:36 -0800 | Subject | Re: [PATCH 4/4] fs/dcache: Avoid the try_lock loops in dentry_kill() |
| |
On Fri, Feb 16, 2018 at 2:32 PM, John Ogness <john.ogness@linutronix.de> wrote: > > lock_parent() already has the problem you are referring to. Callers are > required to recheck the dentry contents and check the returned parent > because they do not know if the trylock succeeded. See > d_prune_aliases(), for example.
What are you talking about?
lock_parent() does the nice "spin_trylock succeeded" special case.
Yes, it will then do the "unlock dentry, do the parent first, then re-check" too, and callers may need to worry about it.
But that's not what I'm complaining about in your patch. You remove the simple case, and make dentry_kill() do the "recheck in case I dropped" every single time.
It's the "turn a simple case into a complex case" that I absolutely detest.
The fact that there are _other_ complex cases doesn't make it any better. The whole "but Bobby does it too" thing is not a defense. Would you jump off a bridge just because your friend did it?
Linus
| |