btrfs: eliminate extra call when doing binary search on extent buffer
The function btrfs_bin_search() is just a wrapper around the function generic_bin_search(), which passes the same arguments plus a default low slot with a value of 0. This adds an unnecessary extra function call, since btrfs_bin_search() is not static. So improve on this by making btrfs_bin_search() an inline function that calls generic_bin_search(), renaming the later to btrfs_generic_bin_search() and exporting it. Reviewed-by: Josef Bacik <josef@toxicpanda.com> Signed-off-by: Filipe Manana <fdmanana@suse.com> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
08241d3c74
commit
7b00dfffeb
|
@ -863,8 +863,8 @@ int btrfs_realloc_node(struct btrfs_trans_handle *trans,
|
|||
* Slot may point to the total number of items (i.e. one position beyond the last
|
||||
* key) if the key is bigger than the last key in the extent buffer.
|
||||
*/
|
||||
static noinline int generic_bin_search(struct extent_buffer *eb, int low,
|
||||
const struct btrfs_key *key, int *slot)
|
||||
int btrfs_generic_bin_search(struct extent_buffer *eb, int low,
|
||||
const struct btrfs_key *key, int *slot)
|
||||
{
|
||||
unsigned long p;
|
||||
int item_size;
|
||||
|
@ -925,16 +925,6 @@ static noinline int generic_bin_search(struct extent_buffer *eb, int low,
|
|||
return 1;
|
||||
}
|
||||
|
||||
/*
|
||||
* Simple binary search on an extent buffer. Works for both leaves and nodes, and
|
||||
* always searches over the whole range of keys (slot 0 to slot 'nritems - 1').
|
||||
*/
|
||||
int btrfs_bin_search(struct extent_buffer *eb, const struct btrfs_key *key,
|
||||
int *slot)
|
||||
{
|
||||
return generic_bin_search(eb, 0, key, slot);
|
||||
}
|
||||
|
||||
static void root_add_used(struct btrfs_root *root, u32 size)
|
||||
{
|
||||
spin_lock(&root->accounting_lock);
|
||||
|
@ -1869,7 +1859,7 @@ static inline int search_for_key_slot(struct extent_buffer *eb,
|
|||
return 0;
|
||||
}
|
||||
|
||||
return generic_bin_search(eb, search_low_slot, key, slot);
|
||||
return btrfs_generic_bin_search(eb, search_low_slot, key, slot);
|
||||
}
|
||||
|
||||
static int search_leaf(struct btrfs_trans_handle *trans,
|
||||
|
|
|
@ -507,6 +507,21 @@ int btrfs_trim_fs(struct btrfs_fs_info *fs_info, struct fstrim_range *range);
|
|||
/* ctree.c */
|
||||
int __init btrfs_ctree_init(void);
|
||||
void __cold btrfs_ctree_exit(void);
|
||||
|
||||
int btrfs_generic_bin_search(struct extent_buffer *eb, int low,
|
||||
const struct btrfs_key *key, int *slot);
|
||||
|
||||
/*
|
||||
* Simple binary search on an extent buffer. Works for both leaves and nodes, and
|
||||
* always searches over the whole range of keys (slot 0 to slot 'nritems - 1').
|
||||
*/
|
||||
static inline int btrfs_bin_search(struct extent_buffer *eb,
|
||||
const struct btrfs_key *key,
|
||||
int *slot)
|
||||
{
|
||||
return btrfs_generic_bin_search(eb, 0, key, slot);
|
||||
}
|
||||
|
||||
int btrfs_bin_search(struct extent_buffer *eb, const struct btrfs_key *key,
|
||||
int *slot);
|
||||
int __pure btrfs_comp_cpu_keys(const struct btrfs_key *k1, const struct btrfs_key *k2);
|
||||
|
|
Loading…
Reference in New Issue