btrfs: make tree search for insert more generic and use it for tree_search
authorDavid Sterba <dsterba@suse.com>
Thu, 25 Jun 2020 16:49:39 +0000 (18:49 +0200)
committerDavid Sterba <dsterba@suse.com>
Mon, 25 Jul 2022 15:45:35 +0000 (17:45 +0200)
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>
fs/btrfs/extent_io.c

index ee84474..a80b7e7 100644 (file)
@@ -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