On Fri, Feb 16, 2018 at 2:32 PM, John Ogness <john.ogness@xxxxxxxxxxxxx> 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