diff --git a/fs/btrfs/ctree.c b/fs/btrfs/ctree.c index a4cb4b642987..2175d67d9d06 100644 --- a/fs/btrfs/ctree.c +++ b/fs/btrfs/ctree.c @@ -2299,7 +2299,7 @@ int btrfs_search_slot(struct btrfs_trans_handle *trans, struct btrfs_root *root, goto done; } } else { - btrfs_tree_read_lock(b); + down_read(&b->lock); } p->locks[level] = BTRFS_READ_LOCK; } diff --git a/fs/btrfs/locking.c b/fs/btrfs/locking.c index 7979449a58d6..f9be1f0f68f0 100644 --- a/fs/btrfs/locking.c +++ b/fs/btrfs/locking.c @@ -139,7 +139,7 @@ void __btrfs_tree_read_lock(struct extent_buffer *eb, enum btrfs_lock_nesting ne void btrfs_tree_read_lock(struct extent_buffer *eb) { - __btrfs_tree_read_lock(eb, BTRFS_NESTING_NORMAL); + __btrfs_tree_read_lock(eb, BTRFS_NESTING_COW); } /*