summaryrefslogtreecommitdiffstats
path: root/fs/btrfs/extent-tree.c
diff options
context:
space:
mode:
authorLiu Bo2016-12-01 01:11:04 +0100
committerDavid Sterba2017-01-03 15:19:17 +0100
commite321f8a801d7b4c40da8005257b05b9c2b51b072 (patch)
tree11df9f784d72ca301b9bfca794fe70c9a0c43628 /fs/btrfs/extent-tree.c
parentbtrfs: fix locking when we put back a delayed ref that's too new (diff)
downloadkernel-qcow2-linux-e321f8a801d7b4c40da8005257b05b9c2b51b072.tar.gz
kernel-qcow2-linux-e321f8a801d7b4c40da8005257b05b9c2b51b072.tar.xz
kernel-qcow2-linux-e321f8a801d7b4c40da8005257b05b9c2b51b072.zip
Btrfs: use down_read_nested to make lockdep silent
If @block_group is not @used_bg, it'll try to get @used_bg's lock without droping @block_group 's lock and lockdep has throwed a scary deadlock warning about it. Fix it by using down_read_nested. Signed-off-by: Liu Bo <bo.li.liu@oracle.com> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to 'fs/btrfs/extent-tree.c')
-rw-r--r--fs/btrfs/extent-tree.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c
index ac7e6713033c..dcd2e798767e 100644
--- a/fs/btrfs/extent-tree.c
+++ b/fs/btrfs/extent-tree.c
@@ -7387,7 +7387,8 @@ btrfs_lock_cluster(struct btrfs_block_group_cache *block_group,
spin_unlock(&cluster->refill_lock);
- down_read(&used_bg->data_rwsem);
+ /* We should only have one-level nested. */
+ down_read_nested(&used_bg->data_rwsem, SINGLE_DEPTH_NESTING);
spin_lock(&cluster->refill_lock);
if (used_bg == cluster->block_group)