btrfs: make tree search for insert more generic and use it for tree_search
With a slight extension of tree_search_for_insert (fill the return node and parent return parameters) we can avoid calling __etree_search from tree_search, that could be removed eventually in followup patches. Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
bebb22c13d
commit
ec60c76f53
@ -443,20 +443,6 @@ tree_search_for_insert(struct extent_io_tree *tree,
|
||||
u64 offset,
|
||||
struct rb_node ***p_ret,
|
||||
struct rb_node **parent_ret)
|
||||
{
|
||||
struct rb_node *next= NULL;
|
||||
struct rb_node *ret;
|
||||
|
||||
ret = __etree_search(tree, offset, &next, NULL, p_ret, parent_ret);
|
||||
if (!ret)
|
||||
return next;
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
* Inexact rb-tree search, return the next entry if @offset is not found
|
||||
*/
|
||||
static inline struct rb_node *tree_search(struct extent_io_tree *tree, u64 offset)
|
||||
{
|
||||
struct rb_root *root = &tree->state;
|
||||
struct rb_node **node = &root->rb_node;
|
||||
@ -475,6 +461,11 @@ static inline struct rb_node *tree_search(struct extent_io_tree *tree, u64 offse
|
||||
return *node;
|
||||
}
|
||||
|
||||
if (p_ret)
|
||||
*p_ret = node;
|
||||
if (parent_ret)
|
||||
*parent_ret = prev;
|
||||
|
||||
/* Search neighbors until we find the first one past the end */
|
||||
while (prev && offset > entry->end) {
|
||||
prev = rb_next(prev);
|
||||
@ -484,6 +475,14 @@ static inline struct rb_node *tree_search(struct extent_io_tree *tree, u64 offse
|
||||
return prev;
|
||||
}
|
||||
|
||||
/*
|
||||
* Inexact rb-tree search, return the next entry if @offset is not found
|
||||
*/
|
||||
static inline struct rb_node *tree_search(struct extent_io_tree *tree, u64 offset)
|
||||
{
|
||||
return tree_search_for_insert(tree, offset, NULL, NULL);
|
||||
}
|
||||
|
||||
/*
|
||||
* utility function to look for merge candidates inside a given range.
|
||||
* Any extents with matching state are merged together into a single
|
||||
|
Loading…
x
Reference in New Issue
Block a user