[PATCH 0/4 v2] Convert rhashtable to use bitlocks

NeilBrown
2019-04-01T23:08:18Z

This series converts rhashtable to use a per-bucket bitlock
rather than a separate array of spinlocks.
This:
reduces memory usage
results in slightly fewer memory accesses
slightly improves parallelism
makes a configuration option unnecessary

The main change from previous version is to use a distinct type for
the pointer in the bucket which has a bit-lock in it. This
helped find two places where rht_ptr() was missed, one
in rhashtable_free_and_destroy() in print_ht in the test code.

Thanks,
NeilBrown

---

NeilBrown (4):
rhashtable: use cmpxchg() in nested_table_alloc()
rhashtable: allow rht_bucket_var to return NULL.
rhashtable: use bit_spin_locks to protect hash bucket.
rhashtable: add lockdep tracking to bucket bit-spin-locks.

include/linux/rhashtable-types.h | 2
include/linux/rhashtable.h | 271 ++++++++++++++++++++++++++------------
ipc/util.c | 1
lib/rhashtable.c | 161 ++++++++++++-----------
lib/test_rhashtable.c | 2
net/bridge/br_fdb.c | 1
net/bridge/br_multicast.c | 1
net/bridge/br_vlan.c | 1
net/bridge/br_vlan_tunnel.c | 1
net/ipv4/ipmr.c | 1
net/ipv6/ip6mr.c | 1
net/netfilter/nf_tables_api.c | 1
12 files changed, 271 insertions(+), 173 deletions(-)

--
Signature