On Sat, Feb 15, 2014 at 1:36 PM, Eric W. Biederman <ebiederm@xxxxxxxxxxxx> wrote: > > The one difference between d_invalidate and check_submounts_and_drop > is that d_invalidate must respect it when a d_revalidate method has > earlier called d_drop so preserve the d_unhashed check in > d_invalidate. What? There's another *huge* difference, namely locking. Your change has huge detrimental effects wrt d_lock - not only do you drop it for the local dentry (to then re-take it in check_submounts_and_drop()), but the whole check_submounts_and_drop thing walks the parent chain and locks each parent with the renamelock held for writing. So NAK on this patch, if for no other reason that you are not talking about the *huge* locking changes at all, and apparently completely ignored them. It's possible that you can argue that performance doesn't matter, and that all the extra huge locking overhead is immaterial because this is not commonly called, but no way in hell can I accept a patch with a commit message that basically lies by omission about what it is doing. This kills the whole series for me. I'm not going to bother trying to review the rest of the patches when the second patch already makes me go "Eric is trying to hide things". Because the locking changes aren't obvious in the patch without knowing what else is going on, and they certainly aren't mentioned in the commit message. Linus -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html