diff options
| author | Yangtao Li <frank.li@vivo.com> | 2025-05-16 11:03:25 +0800 |
|---|---|---|
| committer | David Sterba <dsterba@suse.com> | 2025-07-21 23:53:25 +0200 |
| commit | afaa9f8235b9bf4cf934e21359158d7b0a2bb8d7 (patch) | |
| tree | acc0cf6558242e90c5c9f6a1acd65800a1ef925b /fs/btrfs/ref-verify.c | |
| parent | 3f60f4374ab4cae0595301748e6e6a4a43afa881 (diff) | |
btrfs: use rb_find() in lookup_root_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 ceb155c4b237..72752089d2cf 100644 --- a/fs/btrfs/ref-verify.c +++ b/fs/btrfs/ref-verify.c @@ -112,6 +112,19 @@ static struct block_entry *lookup_block_entry(struct rb_root *root, u64 bytenr) return rb_entry_safe(node, struct block_entry, node); } +static int root_entry_root_objectid_key_cmp(const void *key, const struct rb_node *node) +{ + const u64 *objectid = key; + const struct root_entry *entry = rb_entry(node, struct root_entry, node); + + if (entry->root_objectid < *objectid) + return 1; + else if (entry->root_objectid > *objectid) + return -1; + + return 0; +} + static struct root_entry *insert_root_entry(struct rb_root *root, struct root_entry *re) { @@ -185,20 +198,10 @@ static struct ref_entry *insert_ref_entry(struct rb_root *root, static struct root_entry *lookup_root_entry(struct rb_root *root, u64 objectid) { - struct rb_node *n; - struct root_entry *entry = NULL; + struct rb_node *node; - n = root->rb_node; - while (n) { - entry = rb_entry(n, struct root_entry, node); - if (entry->root_objectid < objectid) - n = n->rb_right; - else if (entry->root_objectid > objectid) - n = n->rb_left; - else - return entry; - } - return NULL; + node = rb_find(&objectid, root, root_entry_root_objectid_key_cmp); + return rb_entry_safe(node, struct root_entry, node); } #ifdef CONFIG_STACKTRACE |