]> git.baikalelectronics.ru Git - kernel.git/commit
rhashtable: kill ht->shift atomic operations
authorDaniel Borkmann <daniel@iogearbox.net>
Thu, 12 Mar 2015 14:28:40 +0000 (15:28 +0100)
committerDavid S. Miller <davem@davemloft.net>
Fri, 13 Mar 2015 03:02:30 +0000 (23:02 -0400)
commit5939e9f00ef6ab4e7e54ee4119a6a9a7a4391f46
tree6b068157f7e2efb5d71978d3a63d14754bcd6a7c
parent34babac87c94546d7232c56afd880fd201b612f6
rhashtable: kill ht->shift atomic operations

Commit ec160349fc2d ("rhashtable: avoid unnecessary wakeup for worker
queue") changed ht->shift to be atomic, which is actually unnecessary.

Instead of leaving the current shift in the core rhashtable structure,
it can be cached inside the individual bucket tables.

There, it will only be initialized once during a new table allocation
in the shrink/expansion slow path, and from then onward it stays immutable
for the rest of the bucket table liftime.

That allows shift to be non-atomic. The patch also moves hash_rnd
management into the table setup. The rhashtable structure now consumes
3 instead of 4 cachelines.

Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Cc: 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