> > > > probably worth looking at doing something different in the case of > > > > shrinking the dcache on the parent, and leaving prune_dcache to > > > > only be called in the case of trying to free up dcache under > > > > memory pressure, where the superblock doesn't actually matter. > > > > For the RHEL3 issue you are reffering to I fixed it by creating a > > > > private list when we shrunk the parent, and submitting that list > > > > to prune_dcache that way we didn't spend all this time looping. I > > > > will see what can be done for upstream. > > > > Which sounds racy with umount. A hashed dentry must either have a > > refcount greater than one, or be on dentry_unused list. This patch > > breaks that assumption. > > > > It should be racy with umount, if we notice that we're being > unmounted we just break, as the unmount will free the dentry's > itself through another means. But unmount could have already finished by then. And now you are dereferencing a super block, that no longer exists. Not good. This separate list thing can't work, unfortunately. On the other hand we should probably split prune_dcache() into two separate functions: the garbage collector one (with sb == NULL argument) and the sb specific shrinker. It should I think be possible to share the second one with shrink_dcache_sb(). 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