lib/rhashtable: allow user to set the minimum shifts of shrinking
authorYing Xue <ying.xue@windriver.com>
Wed, 3 Sep 2014 01:22:36 +0000 (09:22 +0800)
committerDavid S. Miller <davem@davemloft.net>
Thu, 4 Sep 2014 03:56:32 +0000 (20:56 -0700)
commit940001762ac514810e305aab356983829e5fa82a
tree4f63ce59f54641741fb0c148db9c7e400e0c41a7
parent1f59533f9ca5634e7b8914252e48aee9d9cbe501
lib/rhashtable: allow user to set the minimum shifts of shrinking

Although rhashtable library allows user to specify a quiet big size
for user's created hash table, the table may be shrunk to a
very small size - HASH_MIN_SIZE(4) after object is removed from
the table at the first time. Subsequently, even if the total amount
of objects saved in the table is quite lower than user's initial
setting in a long time, the hash table size is still dynamically
adjusted by rhashtable_shrink() or rhashtable_expand() each time
object is inserted or removed from the table. However, as
synchronize_rcu() has to be called when table is shrunk or
expanded by the two functions, we should permit user to set the
minimum table size through configuring the minimum number of shifts
according to user specific requirement, avoiding these expensive
actions of shrinking or expanding because of calling synchronize_rcu().

Signed-off-by: Ying Xue <ying.xue@windriver.com>
Acked-by: Thomas Graf <tgraf@suug.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/rhashtable.h
lib/rhashtable.c