mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-14 10:02:33 -04:00
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: 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:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user