test_rhashtable: Use inlined rhashtable interface
authorHerbert Xu <herbert@gondor.apana.org.au>
Fri, 20 Mar 2015 10:57:04 +0000 (21:57 +1100)
committerDavid S. Miller <davem@davemloft.net>
Fri, 20 Mar 2015 20:16:24 +0000 (16:16 -0400)
This patch converts test_rhashtable to the inlined rhashtable
interface.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
lib/test_rhashtable.c

index 2bc403d8f9ee80a19a1e31d206a1cd5e5e632311..a2ba6adb60a2d0c57510c4926fe2308e486acc4c 100644 (file)
@@ -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);