Fix btrfs_next_leaf to check for new items after dropping locks

Signed-off-by: Chris Mason <chris.mason@oracle.com>
This commit is contained in:
Chris Mason 2008-06-25 16:01:30 -04:00
parent 594a24eb0e
commit 168fd7d271
1 changed files with 7 additions and 0 deletions

View File

@ -2999,7 +2999,14 @@ int btrfs_next_leaf(struct btrfs_root *root, struct btrfs_path *path)
return ret;
nritems = btrfs_header_nritems(path->nodes[0]);
/*
* by releasing the path above we dropped all our locks. A balance
* could have added more items next to the key that used to be
* at the very end of the block. So, check again here and
* advance the path if there are now more items available.
*/
if (nritems > 0 && path->slots[0] < nritems - 1) {
path->slots[0]++;
goto done;
}