Commit c4f38e7c authored by Yangtao Li's avatar Yangtao Li Committed by David Sterba
Browse files

btrfs: use rb_find() in ulist_rbtree_search()



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

Signed-off-by: default avatarYangtao Li <frank.li@vivo.com>
Signed-off-by: default avatarPan Chuang <panchuang@vivo.com>
Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
parent 97346858
Loading
Loading
Loading
Loading
+17 −13
Original line number Diff line number Diff line
@@ -129,21 +129,25 @@ void ulist_free(struct ulist *ulist)
	kfree(ulist);
}

static struct ulist_node *ulist_rbtree_search(struct ulist *ulist, u64 val)
static int ulist_node_val_key_cmp(const void *key, const struct rb_node *node)
{
	struct rb_node *n = ulist->root.rb_node;
	struct ulist_node *u = NULL;

	while (n) {
		u = rb_entry(n, struct ulist_node, rb_node);
		if (u->val < val)
			n = n->rb_right;
		else if (u->val > val)
			n = n->rb_left;
		else
			return u;
	const u64 *val = key;
	const struct ulist_node *unode = rb_entry(node, struct ulist_node, rb_node);

	if (unode->val < *val)
		return 1;
	else if (unode->val > *val)
		return -1;

	return 0;
}
	return NULL;

static struct ulist_node *ulist_rbtree_search(struct ulist *ulist, u64 val)
{
	struct rb_node *node;

	node = rb_find(&val, &ulist->root, ulist_node_val_key_cmp);
	return rb_entry_safe(node, struct ulist_node, rb_node);
}

static void ulist_rbtree_erase(struct ulist *ulist, struct ulist_node *node)