Skip to content

Commit

Permalink
Fix path slots selection in btrfs_search_forward
Browse files Browse the repository at this point in the history
We should decrease the found slot by one as btrfs_search_slot does
when bin_search return 1 and node level > 0.

Signed-off-by: Chris Mason <[email protected]>
  • Loading branch information
ukernel authored and chrismason-xx committed Sep 25, 2008
1 parent 445dceb commit 9652480
Showing 1 changed file with 4 additions and 1 deletion.
5 changes: 4 additions & 1 deletion fs/btrfs/ctree.c
Original file line number Diff line number Diff line change
Expand Up @@ -2992,6 +2992,7 @@ int btrfs_search_forward(struct btrfs_root *root, struct btrfs_key *min_key,
struct extent_buffer *cur;
struct btrfs_key found_key;
int slot;
int sret;
u32 nritems;
int level;
int ret = 1;
Expand All @@ -3009,7 +3010,7 @@ int btrfs_search_forward(struct btrfs_root *root, struct btrfs_key *min_key,
while(1) {
nritems = btrfs_header_nritems(cur);
level = btrfs_header_level(cur);
bin_search(cur, min_key, level, &slot);
sret = bin_search(cur, min_key, level, &slot);

/* at level = 0, we're done, setup the path and exit */
if (level == 0) {
Expand All @@ -3018,6 +3019,8 @@ int btrfs_search_forward(struct btrfs_root *root, struct btrfs_key *min_key,
btrfs_item_key_to_cpu(cur, &found_key, slot);
goto out;
}
if (sret && slot > 0)
slot--;
/*
* check this node pointer against the cache_only and
* min_trans parameters. If it isn't in cache or is too
Expand Down

0 comments on commit 9652480

Please sign in to comment.