[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <cover.1406846586.git.tgraf@suug.ch>
Date: Fri, 1 Aug 2014 00:56:00 +0200
From: Thomas Graf <tgraf@...g.ch>
To: davem@...emloft.net, netdev@...r.kernel.org
Cc: linux-kernel@...r.kernel.org, kaber@...sh.net,
paulmck@...ux.vnet.ibm.com, josh@...htriplett.org,
challa@...ronetworks.com, walpole@...pdx.edu, dev@...nvswitch.org,
tklauser@...tanz.ch, netfilter-devel@...r.kernel.org
Subject: [PATCH v2 0/3 net-next] Lockless netlink_lookup() with new concurrent hash table
Netlink sockets are maintained in a hash table to allow efficient lookup
via the port ID for unicast messages. However, lookups currently require
a read lock to be taken. This series adds a new generic, resizable,
scalable, concurrent hash table based on the paper referenced in the first
patch. It then makes use of the new data type to implement lockless
netlink_lookup().
Patch 3/3 to convert nft_hash is included for reference but should be
merged via the netfilter tree. Inclusion in this series is to provide
context for the suggested API.
Against net-next since the initial user of the new hash table is in net/
Changes:
v1-v2:
- fixed traversal off-by-one as spotted by Tobias Klauser
- removed unlikely() from BUG_ON() as spotted by Josh Triplett
- new 3rd patch to convert nft_hash to rhashtable
- make rhashtable_insert() return void
- nl_sk_hash_lock must be a mutex
- fixed wrong name of rht_shrink_below_30()
- exported symbols rht_grow_above_75() and rht_shrink_below_30()
- allow table freeing with RCU callback
Thomas Graf (3):
lib: Resizable, Scalable, Concurrent Hash Table
netlink: Convert netlink_lookup() to use RCU protected hash table
nftables: Convert nft_hash to use generic rhashtable
include/linux/rhashtable.h | 213 ++++++++++++
lib/Kconfig.debug | 8 +
lib/Makefile | 2 +-
lib/rhashtable.c | 797 +++++++++++++++++++++++++++++++++++++++++++++
net/netfilter/nft_hash.c | 291 +++--------------
net/netlink/af_netlink.c | 285 ++++++----------
net/netlink/af_netlink.h | 18 +-
net/netlink/diag.c | 11 +-
8 files changed, 1190 insertions(+), 435 deletions(-)
create mode 100644 include/linux/rhashtable.h
create mode 100644 lib/rhashtable.c
--
1.9.3
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists