summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/md/bcache/btree_cache.c18
1 files changed, 2 insertions, 16 deletions
diff --git a/drivers/md/bcache/btree_cache.c b/drivers/md/bcache/btree_cache.c
index ffd05fa61c77..6959e4699592 100644
--- a/drivers/md/bcache/btree_cache.c
+++ b/drivers/md/bcache/btree_cache.c
@@ -53,25 +53,10 @@ static void mca_data_free(struct cache_set *c, struct btree *b)
#define PTR_HASH(_k) (bkey_i_to_extent_c(_k)->v._data[0])
-/*
- * gcc isn't smart enough to optimize away a memcmp for a constant number of
- * bytes :(
- */
-static inline int btree_rhash_cmp(struct rhashtable_compare_arg *arg,
- const void *obj)
-{
- const u64 *v = arg->key;
- const struct btree *b = obj;
-
- return PTR_HASH(&b->key) == *v ? 0 : 1;
-}
-
static const struct rhashtable_params bch_btree_cache_params = {
.head_offset = offsetof(struct btree, hash),
.key_offset = offsetof(struct btree, key.v),
.key_len = sizeof(struct bch_extent_ptr),
- .hashfn = jhash,
- .obj_cmpfn = btree_rhash_cmp,
};
static void mca_data_alloc(struct cache_set *c, struct btree *b, gfp_t gfp)
@@ -151,7 +136,8 @@ int mca_hash_insert(struct cache_set *c, struct btree *b,
return 0;
}
-static inline struct btree *mca_find(struct cache_set *c,
+noinline __flatten
+static struct btree *mca_find(struct cache_set *c,
const struct bkey_i *k)
{
return rhashtable_lookup_fast(&c->btree_cache_table, &PTR_HASH(k),