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 e7bea1d5f75..c7b67cf24bb 100644 --- a/fs/btrfs/ctree.c +++ b/fs/btrfs/ctree.c @@ -2564,7 +2564,10 @@ again:  			 * must have write locks on this node and the  			 * parent  			 */ -			if (level + 1 > write_lock_level) { +			if (level > write_lock_level || +			    (level + 1 > write_lock_level && +			    level + 1 < BTRFS_MAX_LEVEL && +			    p->nodes[level + 1])) {  				write_lock_level = level + 1;  				btrfs_release_path(p);  				goto again;  |