Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

authored by

Yangtao Li and committed by
David Sterba
97346858 7a91e018

+18 -21
+18 -21
fs/btrfs/delayed-inode.c
··· 334 334 return item; 335 335 } 336 336 337 + static int delayed_item_index_cmp(const void *key, const struct rb_node *node) 338 + { 339 + const u64 *index = key; 340 + const struct btrfs_delayed_item *delayed_item = rb_entry(node, 341 + struct btrfs_delayed_item, rb_node); 342 + 343 + if (delayed_item->index < *index) 344 + return 1; 345 + else if (delayed_item->index > *index) 346 + return -1; 347 + 348 + return 0; 349 + } 350 + 337 351 /* 338 352 * Look up the delayed item by key. 339 353 * ··· 361 347 struct rb_root *root, 362 348 u64 index) 363 349 { 364 - struct rb_node *node = root->rb_node; 365 - struct btrfs_delayed_item *delayed_item = NULL; 350 + struct rb_node *node; 366 351 367 - while (node) { 368 - delayed_item = rb_entry(node, struct btrfs_delayed_item, 369 - rb_node); 370 - if (delayed_item->index < index) 371 - node = node->rb_right; 372 - else if (delayed_item->index > index) 373 - node = node->rb_left; 374 - else 375 - return delayed_item; 376 - } 377 - 378 - return NULL; 352 + node = rb_find(&index, root, delayed_item_index_cmp); 353 + return rb_entry_safe(node, struct btrfs_delayed_item, rb_node); 379 354 } 380 355 381 356 static int btrfs_delayed_item_cmp(const struct rb_node *new, ··· 372 369 { 373 370 const struct btrfs_delayed_item *new_item = 374 371 rb_entry(new, struct btrfs_delayed_item, rb_node); 375 - const struct btrfs_delayed_item *exist_item = 376 - rb_entry(exist, struct btrfs_delayed_item, rb_node); 377 372 378 - if (new_item->index < exist_item->index) 379 - return -1; 380 - if (new_item->index > exist_item->index) 381 - return 1; 382 - return 0; 373 + return delayed_item_index_cmp(&new_item->index, exist); 383 374 } 384 375 385 376 static int __btrfs_add_delayed_item(struct btrfs_delayed_node *delayed_node,