On Fri, Jul 02, 2010 at 03:44:27PM +0200, Peter Zijlstra wrote: > On Fri, 2010-07-02 at 15:12 +0200, Frederic Weisbecker wrote: > > > > I don't think the deadlock can really happen, as we can't release the directory while > > we are reading it. Plus I guess we can't mmap a directory (someone correct me if > > I'm wrong). > > > > > Is there someone who could give me a hint here? > > If its purely directories you can try and give directory inode locks a > different class. We have a static layout in include/linux/fs.h: enum inode_i_mutex_lock_class { I_MUTEX_NORMAL, I_MUTEX_PARENT, I_MUTEX_CHILD, I_MUTEX_XATTR, I_MUTEX_QUOTA }; I fear none of them fits in our scheme, except the normal one. And playing with a supplementary set of classes only used in a single place would make the lockdep checks useless there, even worse it would make us missing a lot of right checks. vfs_readdir() locks the directory before calling the fs, and none of the nested classes would be in its good right there, as the directory is the current inode to work on, not a parent nor a child or so. And unfortunately it's the same in reiserfs_file_release() that can close about whatever inode, we are locking the current inode, not a parent, child, xattr, or so. So changing the nesting class here would not be a good thing to do I fear. -- To unsubscribe from this list: send the line "unsubscribe reiserfs-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html