diff options
| author | Yangtao Li <frank.li@vivo.com> | 2025-05-16 11:03:23 +0800 |
|---|---|---|
| committer | David Sterba <dsterba@suse.com> | 2025-07-21 23:53:25 +0200 |
| commit | 4044a7ed3b1e8a786e6d47ebf756ab25160bd98f (patch) | |
| tree | 505989c717c0afdd01b032220afbd4ccf286386d /fs/btrfs/ref-verify.c | |
| parent | b017a92bd9a8ec89cf77496db3d347d244fbb7cf (diff) | |
btrfs: use rb_find() in lookup_block_entry()
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>
Diffstat (limited to 'fs/btrfs/ref-verify.c')
| -rw-r--r-- | fs/btrfs/ref-verify.c | 29 |
1 files changed, 16 insertions, 13 deletions
diff --git a/fs/btrfs/ref-verify.c b/fs/btrfs/ref-verify.c index 2928abf7eb82..dd328382e64a 100644 --- a/fs/btrfs/ref-verify.c +++ b/fs/btrfs/ref-verify.c @@ -75,6 +75,19 @@ struct block_entry { struct list_head actions; }; +static int block_entry_bytenr_key_cmp(const void *key, const struct rb_node *node) +{ + const u64 *bytenr = key; + const struct block_entry *entry = rb_entry(node, struct block_entry, node); + + if (entry->bytenr < *bytenr) + return 1; + else if (entry->bytenr > *bytenr) + return -1; + + return 0; +} + static struct block_entry *insert_block_entry(struct rb_root *root, struct block_entry *be) { @@ -100,20 +113,10 @@ static struct block_entry *insert_block_entry(struct rb_root *root, static struct block_entry *lookup_block_entry(struct rb_root *root, u64 bytenr) { - struct rb_node *n; - struct block_entry *entry = NULL; + struct rb_node *node; - n = root->rb_node; - while (n) { - entry = rb_entry(n, struct block_entry, node); - if (entry->bytenr < bytenr) - n = n->rb_right; - else if (entry->bytenr > bytenr) - n = n->rb_left; - else - return entry; - } - return NULL; + node = rb_find(&bytenr, root, block_entry_bytenr_key_cmp); + return rb_entry_safe(node, struct block_entry, node); } static struct root_entry *insert_root_entry(struct rb_root *root, |