diff options
-rw-r--r-- | fs/btrfs/ctree.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/fs/btrfs/ctree.c b/fs/btrfs/ctree.c index e7bea1d5f75f..c7b67cf24bba 100644 --- a/fs/btrfs/ctree.c +++ b/fs/btrfs/ctree.c | |||
@@ -2564,7 +2564,10 @@ again: | |||
2564 | * must have write locks on this node and the | 2564 | * must have write locks on this node and the |
2565 | * parent | 2565 | * parent |
2566 | */ | 2566 | */ |
2567 | if (level + 1 > write_lock_level) { | 2567 | if (level > write_lock_level || |
2568 | (level + 1 > write_lock_level && | ||
2569 | level + 1 < BTRFS_MAX_LEVEL && | ||
2570 | p->nodes[level + 1])) { | ||
2568 | write_lock_level = level + 1; | 2571 | write_lock_level = level + 1; |
2569 | btrfs_release_path(p); | 2572 | btrfs_release_path(p); |
2570 | goto again; | 2573 | goto again; |