On Sun, Jan 16, 2011 at 05:33:24AM +1100, Nick Piggin wrote: > Definitely agree. > > I'm on the road at the moment so would much appreciate if you can > cut the patch, but I could suggest something along the lines of: Easier than that, actually. All it takes is (in #for-next, yet to be reordered in front of queue) if (IS_ERR(dentry)) goto fail; + if (nd->flags & LOOKUP_RCU) + goto done2; goto done; in the end of need_revalidate and if (dentry->d_flags & DCACHE_OP_REVALIDATE) goto need_revalidate; +done2: in LOOKUP_RCU side of if ()... need_lookup does *not* suffer the same problem; you can't get there without dropping LOOKUP_RCU - the first thing it does is grabbing a mutex, for fsck sake... And yes, you do drop RCU on all paths leading there. I certainly don't like the ugliness of that code, but rewriting that to something less... unpleasant is a separate story. Again, see #for-next; I'll reorder it shortly. -- 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