Commit 7b00dfff authored by Filipe Manana's avatar Filipe Manana Committed by David Sterba

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: default avatarJosef Bacik <josef@toxicpanda.com>
Signed-off-by: default avatarFilipe Manana <fdmanana@suse.com>
Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
parent 08241d3c
...@@ -863,8 +863,8 @@ int btrfs_realloc_node(struct btrfs_trans_handle *trans, ...@@ -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 * 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. * 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, int btrfs_generic_bin_search(struct extent_buffer *eb, int low,
const struct btrfs_key *key, int *slot) const struct btrfs_key *key, int *slot)
{ {
unsigned long p; unsigned long p;
int item_size; int item_size;
...@@ -925,16 +925,6 @@ static noinline int generic_bin_search(struct extent_buffer *eb, int low, ...@@ -925,16 +925,6 @@ static noinline int generic_bin_search(struct extent_buffer *eb, int low,
return 1; 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) static void root_add_used(struct btrfs_root *root, u32 size)
{ {
spin_lock(&root->accounting_lock); spin_lock(&root->accounting_lock);
...@@ -1869,7 +1859,7 @@ static inline int search_for_key_slot(struct extent_buffer *eb, ...@@ -1869,7 +1859,7 @@ static inline int search_for_key_slot(struct extent_buffer *eb,
return 0; 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, 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); ...@@ -507,6 +507,21 @@ int btrfs_trim_fs(struct btrfs_fs_info *fs_info, struct fstrim_range *range);
/* ctree.c */ /* ctree.c */
int __init btrfs_ctree_init(void); int __init btrfs_ctree_init(void);
void __cold btrfs_ctree_exit(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 btrfs_bin_search(struct extent_buffer *eb, const struct btrfs_key *key,
int *slot); int *slot);
int __pure btrfs_comp_cpu_keys(const struct btrfs_key *k1, const struct btrfs_key *k2); int __pure btrfs_comp_cpu_keys(const struct btrfs_key *k1, const struct btrfs_key *k2);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment