diff --git a/fs/btrfs/ctree.c b/fs/btrfs/ctree.c index a4cb4b642987..a8cc8311f238 100644 --- a/fs/btrfs/ctree.c +++ b/fs/btrfs/ctree.c @@ -1859,7 +1859,7 @@ static struct extent_buffer *btrfs_search_slot_get_root(struct btrfs_root *root, } p->nodes[level] = b; - if (!p->skip_locking) + if (!p->skip_locking || level > write_lock_level) p->locks[level] = root_lock; /* * Callers are responsible for dropping b's references.