On Mon, Oct 20, 2008 at 02:53:40PM -0500, Christoph Lameter wrote: > Miklos Szeredi wrote: > > Case below was brainfart, please ignore. But that doesn't really > > help: the VFS assumes that you cannot umount while there are busy > > dentries/inodes. Usually it works this way: VFS first gets vfsmount > > ref, then gets dentry ref, and releases them in the opposite order. > > And umount is not allowed if vfsmount has a non-zero refcount (it's a > > bit more complicated, but the essense is the same). > > The dentries that we get a ref on are candidates for removal. Their lifetime > is limited. Unmounting while we are trying to remove dentries/inodes results > in two mechanisms removing dentries/inodes. > > If we have obtained a reference then invalidate_list() will return the number > of busy inodes which would trigger the printk in generic_shutdown_super(). But > these are inodes currently being reclaimed by slab defrag. Just waiting a bit > would remedy the situation. > > We would need some way to make generic_shutdown_super() wait until slab defrag > is finished. Seems to me that prune_dcache() handles this case by holding the sb->s_umount semaphore while pruning. The same logic applies here, right? Cheers, Dave. -- Dave Chinner david@xxxxxxxxxxxxx -- 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