On Wed, Feb 7, 2018 at 4:35 PM, NeilBrown <neilb@xxxxxxxx> wrote: >> On Wed, Feb 7, 2018 at 8:58 AM, Peter Zijlstra <peterz@xxxxxxxxxxxxx> wrote: >> [...] >>> >>>> Lockdep reports this issue when GFP_FS is infact set, and we enter >>>> this path and acquire the lock. So lockdep seems to be doing the right >>>> thing however by design it is reporting a false-positive. >>> >>> So I'm not seeing how its a false positive. fs/inode.c sets a different >>> lock class per filesystem type. So recursing on an i_mutex within a >>> filesystem does sound dodgy. >> >> But directory inodes and file inodes in the same filesystem share the >> same lock class right? > > Not since v2.6.24 > Commit: 14358e6ddaed ("lockdep: annotate dir vs file i_mutex") > > You were using 4.9.60. so they should be separate.... > > Maybe shmem_get_inode() needs to call unlock_new_inode() or just > lockdep_annotate_inode_mutex_key() after inode_init_owner(). > > Maybe inode_init_owner() should call lockdep_annotate_inode_mutex_key() > directly. Thanks for the ideas! I will test lockdep_annotate_inode_mutex_key after inode_init_owner in shmem and let you know if the issue goes away. It seems hugetlbfs does this too (I think for similar reasons). - Joel -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>