From 3f850c9ed413048cdc7913291322ce822d488d20 Mon Sep 17 00:00:00 2001 From: Kent Overstreet Date: Thu, 25 Jan 2018 18:37:26 -0500 Subject: bcachefs: provide an obj_cmpfn to rhashtable code default is to use memcmp, which isn't getting inlined (due to kernel not using __builtin_memcpy?) --- fs/bcachefs/btree_cache.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/fs/bcachefs/btree_cache.c b/fs/bcachefs/btree_cache.c index 78e36299b7a6..a439760a1dfd 100644 --- a/fs/bcachefs/btree_cache.c +++ b/fs/bcachefs/btree_cache.c @@ -57,10 +57,20 @@ static void btree_node_data_free(struct bch_fs *c, struct btree *b) list_move(&b->list, &bc->freed); } +static int bch2_btree_cache_cmp_fn(struct rhashtable_compare_arg *arg, + const void *obj) +{ + const struct btree *b = obj; + const u64 *v = arg->key; + + 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), + .obj_cmpfn = bch2_btree_cache_cmp_fn, }; static void btree_node_data_alloc(struct bch_fs *c, struct btree *b, gfp_t gfp) -- cgit v1.2.3