From: Pan Chuang Date: Fri, 16 May 2025 03:03:33 +0000 (+0800) Subject: btrfs: use rb_find_add() in rb_simple_insert() X-Git-Tag: block-6.17-20250808~77^2~175 X-Git-Url: https://git.kernel.dk/?a=commitdiff_plain;h=46d549928cc93f9b08fd66d0ff7778e800bb17f3;p=linux-block.git btrfs: use rb_find_add() in rb_simple_insert() Use the rb-tree helper so we don't open code the search and insert code. Signed-off-by: Pan Chuang Reviewed-by: David Sterba Signed-off-by: David Sterba --- diff --git a/fs/btrfs/misc.h b/fs/btrfs/misc.h index e28bca1b3de5..9cc292402696 100644 --- a/fs/btrfs/misc.h +++ b/fs/btrfs/misc.h @@ -119,28 +119,23 @@ static inline struct rb_node *rb_simple_search_first(const struct rb_root *root, return ret; } -static inline struct rb_node *rb_simple_insert(struct rb_root *root, - struct rb_simple_node *simple_node) +static int rb_simple_node_bytenr_cmp(struct rb_node *new, const struct rb_node *existing) { - struct rb_node **p = &root->rb_node; - struct rb_node *parent = NULL; - struct rb_simple_node *entry; + struct rb_simple_node *new_entry = rb_entry(new, struct rb_simple_node, rb_node); + struct rb_simple_node *existing_entry = rb_entry(existing, struct rb_simple_node, rb_node); - while (*p) { - parent = *p; - entry = rb_entry(parent, struct rb_simple_node, rb_node); + if (new_entry->bytenr < existing_entry->bytenr) + return -1; + else if (new_entry->bytenr > existing_entry->bytenr) + return 1; - if (simple_node->bytenr < entry->bytenr) - p = &(*p)->rb_left; - else if (simple_node->bytenr > entry->bytenr) - p = &(*p)->rb_right; - else - return parent; - } + return 0; +} - rb_link_node(&simple_node->rb_node, parent, p); - rb_insert_color(&simple_node->rb_node, root); - return NULL; +static inline struct rb_node *rb_simple_insert(struct rb_root *root, + struct rb_simple_node *simple_node) +{ + return rb_find_add(&simple_node->rb_node, root, rb_simple_node_bytenr_cmp); } static inline bool bitmap_test_range_all_set(const unsigned long *addr,