From 921951c00b59ea2bdcaa52e95f9a78f8897e69bd Mon Sep 17 00:00:00 2001 From: Josef Bacik Date: Wed, 7 Nov 2012 13:44:13 -0500 Subject: [PATCH] --- yaml --- r: 346747 b: refs/heads/master c: 5124e00ec5b0be56155a11aec416fcc5125339f1 h: refs/heads/master i: 346745: ea1e086e6591c15f6f0cbff6ef940b854fb866f8 346743: b33c1f53925f778b0e7e5176f36ba6bb585cfb03 v: v3 --- [refs] | 2 +- trunk/fs/btrfs/ctree.c | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index cbe3a32cd75f..60ff688e55f7 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 0b1c6ccadee4ea4adb98799f3430fc72e57a187f +refs/heads/master: 5124e00ec5b0be56155a11aec416fcc5125339f1 diff --git a/trunk/fs/btrfs/ctree.c b/trunk/fs/btrfs/ctree.c index e7bea1d5f75f..c7b67cf24bba 100644 --- a/trunk/fs/btrfs/ctree.c +++ b/trunk/fs/btrfs/ctree.c @@ -2564,7 +2564,10 @@ int btrfs_search_slot(struct btrfs_trans_handle *trans, struct btrfs_root * 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;