Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b182aa6e authored by Herbert Xu's avatar Herbert Xu Committed by David S. Miller
Browse files

test_rhashtable: Use inlined rhashtable interface



This patch converts test_rhashtable to the inlined rhashtable
interface.

Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent fa377321
Loading
Loading
Loading
Loading
+19 −14
Original line number Diff line number Diff line
@@ -38,6 +38,16 @@ struct test_obj {
	struct rhash_head	node;
};

static const struct rhashtable_params test_rht_params = {
	.nelem_hint = TEST_HT_SIZE,
	.head_offset = offsetof(struct test_obj, node),
	.key_offset = offsetof(struct test_obj, value),
	.key_len = sizeof(int),
	.hashfn = jhash,
	.max_size = 2, /* we expand/shrink manually here */
	.nulls_base = (3U << RHT_BASE_SHIFT),
};

static int __init test_rht_lookup(struct rhashtable *ht)
{
	unsigned int i;
@@ -47,7 +57,7 @@ static int __init test_rht_lookup(struct rhashtable *ht)
		bool expected = !(i % 2);
		u32 key = i;

		obj = rhashtable_lookup(ht, &key);
		obj = rhashtable_lookup_fast(ht, &key, test_rht_params);

		if (expected && !obj) {
			pr_warn("Test failed: Could not find key %u\n", key);
@@ -133,7 +143,11 @@ static int __init test_rhashtable(struct rhashtable *ht)
		obj->ptr = TEST_PTR;
		obj->value = i * 2;

		rhashtable_insert(ht, &obj->node);
		err = rhashtable_insert_fast(ht, &obj->node, test_rht_params);
		if (err) {
			kfree(obj);
			goto error;
		}
	}

	rcu_read_lock();
@@ -173,10 +187,10 @@ static int __init test_rhashtable(struct rhashtable *ht)
	for (i = 0; i < TEST_ENTRIES; i++) {
		u32 key = i * 2;

		obj = rhashtable_lookup(ht, &key);
		obj = rhashtable_lookup_fast(ht, &key, test_rht_params);
		BUG_ON(!obj);

		rhashtable_remove(ht, &obj->node);
		rhashtable_remove_fast(ht, &obj->node, test_rht_params);
		kfree(obj);
	}

@@ -195,20 +209,11 @@ static struct rhashtable ht;

static int __init test_rht_init(void)
{
	struct rhashtable_params params = {
		.nelem_hint = TEST_HT_SIZE,
		.head_offset = offsetof(struct test_obj, node),
		.key_offset = offsetof(struct test_obj, value),
		.key_len = sizeof(int),
		.hashfn = jhash,
		.max_size = 2, /* we expand/shrink manually here */
		.nulls_base = (3U << RHT_BASE_SHIFT),
	};
	int err;

	pr_info("Running resizable hashtable tests...\n");

	err = rhashtable_init(&ht, &params);
	err = rhashtable_init(&ht, &test_rht_params);
	if (err < 0) {
		pr_warn("Test failed: Unable to initialize hashtable: %d\n",
			err);