btrfs: fix the bug that __tree_search() returns the wrong result in extent_map.c
PATCH 1/4 btrfs: fix the bug that __tree_search() returns the wrong result in extent_map.c
__tree_search() returns the reverse result about the prev node and the next node. And we can get the prev node and the next node directly by rb_prev() and rb_next(), so it is unnecessary to use while loop to get them.
This patch fixes this bug of the wrong result.
Signed-off-by Miao Xie <[email protected]>
--- fs/btrfs/extent_map.c | 13 ++++--------- 1 files changed, 4 insertions(+), 9 deletions(-)
fs/btrfs/extent_map.c +4 -9
@@ -136,20 +136,15 @@ static struct rb_node *__tree_search(struct rb_root *root, u64 offset,if (prev_ret) { orig_prev = prev; -while (prev && offset >=extent_map_end (prev_entry)) { - prev =rb_next (prev); - prev_entry = rb_entry(prev, struct extent_map, rb_node); - } +if (prev && offset < prev_entry->start) + prev =rb_prev (prev); *prev_ret = prev; prev = orig_prev; }if (next_ret) { - prev_entry = rb_entry(prev, struct extent_map, rb_node); -while (prev && offset < prev_entry->start) { - prev =rb_prev (prev); - prev_entry = rb_entry(prev, struct extent_map, rb_node); - } +if (prev && offset >=extent_map_end (prev_entry)) + prev =rb_next (prev); *next_ret = prev; }return NULL ;
Signature · 1 line
1.6.5.2