Commit c5f0a172 authored by Rolf Eike Beer's avatar Rolf Eike Beer Committed by David S. Miller
Browse files

rhashtable: make test actually random



The "random rhlist add/delete operations" actually wasn't very random, as all
cases tested the same bit. Since the later parts of this loop depend on the
first case execute this unconditionally, and then test on different bits for the
remaining tests. While at it only request as much random bits as are actually
used.

Signed-off-by: default avatarRolf Eike Beer <eike-kernel@sf-tec.de>
Acked-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 95a0396a
Loading
Loading
Loading
Loading
+22 −36
Original line number Diff line number Diff line
@@ -369,18 +369,10 @@ static int __init test_rhltable(unsigned int entries)
	pr_info("test %d random rhlist add/delete operations\n", entries);
	for (j = 0; j < entries; j++) {
		u32 i = prandom_u32_max(entries);
		u32 prand = get_random_u32();
		u32 prand = prandom_u32_max(4);

		cond_resched();

		if (prand == 0)
			prand = get_random_u32();

		if (prand & 1) {
			prand >>= 1;
			continue;
		}

		err = rhltable_remove(&rhlt, &rhl_test_objects[i].list_node, test_rht_params);
		if (test_bit(i, obj_in_table)) {
			clear_bit(i, obj_in_table);
@@ -393,10 +385,6 @@ static int __init test_rhltable(unsigned int entries)
		}

		if (prand & 1) {
			prand >>= 1;
			continue;
		}

			err = rhltable_insert(&rhlt, &rhl_test_objects[i].list_node, test_rht_params);
			if (err == 0) {
				if (WARN(test_and_set_bit(i, obj_in_table), "succeeded to insert same object %d", i))
@@ -405,12 +393,9 @@ static int __init test_rhltable(unsigned int entries)
				if (WARN(!test_bit(i, obj_in_table), "failed to insert object %d", i))
					continue;
			}

		if (prand & 1) {
			prand >>= 1;
			continue;
		}

		if (prand & 2) {
			i = prandom_u32_max(entries);
			if (test_bit(i, obj_in_table)) {
				err = rhltable_remove(&rhlt, &rhl_test_objects[i].list_node, test_rht_params);
@@ -424,6 +409,7 @@ static int __init test_rhltable(unsigned int entries)
					set_bit(i, obj_in_table);
			}
		}
	}

	for (i = 0; i < entries; i++) {
		cond_resched();