On Mon, 13 Oct 2008, Nick Piggin wrote: > In many cases, yes it seems to. And some of the approaches even if > they work now seem like they *might* cause problematic constraints > in the design... Have Al and Christoph reviewed the dentry and inode > patches? This d_invalidate() looks suspicious to me: +/* + * Slab has dropped all the locks. Get rid of the refcount obtained + * earlier and also free the object. + */ +static void kick_dentries(struct kmem_cache *s, + int nr, void **v, void *private) +{ + struct dentry *dentry; + int i; + + /* + * First invalidate the dentries without holding the dcache lock + */ + for (i = 0; i < nr; i++) { + dentry = v[i]; + + if (dentry) + d_invalidate(dentry); + } I think it's wrong to unhash dentries while they are possibly still being used. You can do the shrink_dcache_parent() here, but should leave the unhashing to be done by prune_one_dentry(), after it's been checked that there are no other users of the dentry. Miklos -- 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