btrfs: use rb_find_add() in ulist_rbtree_insert()

Use the rb-tree helper so we don't open code the search and insert
code.

Signed-off-by: Yangtao Li <frank.li@vivo.com>
Signed-off-by: Pan Chuang <panchuang@vivo.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
Yangtao Li 2025-05-16 11:03:22 +08:00 committed by David Sterba
parent c4f38e7ca5
commit b017a92bd9

View file

@ -159,25 +159,20 @@ static void ulist_rbtree_erase(struct ulist *ulist, struct ulist_node *node)
ulist->nnodes--;
}
static int ulist_node_val_cmp(struct rb_node *new, const struct rb_node *existing)
{
const struct ulist_node *unode = rb_entry(new, struct ulist_node, rb_node);
return ulist_node_val_key_cmp(&unode->val, existing);
}
static int ulist_rbtree_insert(struct ulist *ulist, struct ulist_node *ins)
{
struct rb_node **p = &ulist->root.rb_node;
struct rb_node *parent = NULL;
struct ulist_node *cur = NULL;
struct rb_node *node;
while (*p) {
parent = *p;
cur = rb_entry(parent, struct ulist_node, rb_node);
if (cur->val < ins->val)
p = &(*p)->rb_right;
else if (cur->val > ins->val)
p = &(*p)->rb_left;
else
return -EEXIST;
}
rb_link_node(&ins->rb_node, parent, p);
rb_insert_color(&ins->rb_node, &ulist->root);
node = rb_find_add(&ins->rb_node, &ulist->root, ulist_node_val_cmp);
if (node)
return -EEXIST;
return 0;
}