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

btrfs: use rb_find() in __btrfs_lookup_delayed_item()



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 7a91e018
Loading
Loading
Loading
Loading
+18 −21
Original line number Diff line number Diff line
@@ -334,6 +334,20 @@ static struct btrfs_delayed_item *btrfs_alloc_delayed_item(u16 data_len,
	return item;
}

static int delayed_item_index_cmp(const void *key, const struct rb_node *node)
{
	const u64 *index = key;
	const struct btrfs_delayed_item *delayed_item = rb_entry(node,
						 struct btrfs_delayed_item, rb_node);

	if (delayed_item->index < *index)
		return 1;
	else if (delayed_item->index > *index)
		return -1;

	return 0;
}

/*
 * Look up the delayed item by key.
 *
@@ -347,21 +361,10 @@ static struct btrfs_delayed_item *__btrfs_lookup_delayed_item(
				struct rb_root *root,
				u64 index)
{
	struct rb_node *node = root->rb_node;
	struct btrfs_delayed_item *delayed_item = NULL;
	struct rb_node *node;

	while (node) {
		delayed_item = rb_entry(node, struct btrfs_delayed_item,
					rb_node);
		if (delayed_item->index < index)
			node = node->rb_right;
		else if (delayed_item->index > index)
			node = node->rb_left;
		else
			return delayed_item;
	}

	return NULL;
	node = rb_find(&index, root, delayed_item_index_cmp);
	return rb_entry_safe(node, struct btrfs_delayed_item, rb_node);
}

static int btrfs_delayed_item_cmp(const struct rb_node *new,
@@ -369,14 +372,8 @@ static int btrfs_delayed_item_cmp(const struct rb_node *new,
{
	const struct btrfs_delayed_item *new_item =
		rb_entry(new, struct btrfs_delayed_item, rb_node);
	const struct btrfs_delayed_item *exist_item =
		rb_entry(exist, struct btrfs_delayed_item, rb_node);

	if (new_item->index < exist_item->index)
		return -1;
	if (new_item->index > exist_item->index)
		return 1;
	return 0;
	return delayed_item_index_cmp(&new_item->index, exist);
}

static int __btrfs_add_delayed_item(struct btrfs_delayed_node *delayed_node,