ext2: Silence lockdep warning about reclaim under xattr_sem
authorJan Kara <jack@suse.cz>
Mon, 24 Feb 2020 11:52:17 +0000 (12:52 +0100)
committerJan Kara <jack@suse.cz>
Wed, 26 Feb 2020 12:14:27 +0000 (13:14 +0100)
commitbc36dfffd5f3f19edcf85954d93eb0bc45875c37
tree725b67fb30346bf312326d501eefbfff53a29c98
parentf8788d86ab28f61f7b46eb6be375f8a726783636
ext2: Silence lockdep warning about reclaim under xattr_sem

Lockdep complains about a chain:
  sb_internal#2 --> &ei->xattr_sem#2 --> fs_reclaim

and shrink_dentry_list -> ext2_evict_inode -> ext2_xattr_delete_inode ->
down_write(ei->xattr_sem) creating a locking cycle in the reclaim path.
This is however a false positive because when we are in
ext2_evict_inode() we are the only holder of the inode reference and
nobody else should touch xattr_sem of that inode. So we cannot ever
block on acquiring the xattr_sem in the reclaim path.

Silence the lockdep warning by using down_write_trylock() in
ext2_xattr_delete_inode() to not create false locking dependency.

Reported-by: "J. R. Okajima" <hooanon05g@gmail.com>
Reviewed-by: Ritesh Harjani <riteshh@linux.ibm.com>
Signed-off-by: Jan Kara <jack@suse.cz>
fs/ext2/xattr.c