netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/9] rhashtable: Per bucket locks & deferred table resizing
@ 2014-12-15 12:51 Thomas Graf
  2014-12-15 12:51 ` [PATCH 1/9] rhashtable: Do hashing inside of rhashtable_lookup_compare() Thomas Graf
                   ` (9 more replies)
  0 siblings, 10 replies; 47+ messages in thread
From: Thomas Graf @ 2014-12-15 12:51 UTC (permalink / raw)
  To: davem; +Cc: netdev, kernel, herbert, paulmck, edumazet, john.r.fastabend,
	josh

Prepares for and introduces per bucket spinlocks and deferred table
resizing. This allows for parallel table mutations in different hash
buckets from atomic context. The resizing occurs in the background
in a separate worker thread while lookups, inserts, and removals can
continue.

Also modified the chain linked list to be terminated with a special
nulls marker to allow entries to move between multiple lists.

Last but not least, reintroduces lockless netlink_lookup() with
deferred Netlink socket destruction to avoid the side effect of
increased netlink_release() runtime.

Thomas Graf (9):
  rhashtable: Do hashing inside of rhashtable_lookup_compare()
  rhashtable: Use rht_obj() instead of manual offset calculation
  rhashtable: Convert bucket iterators to take table and index
  rhashtable: Factor out bucket_tail() function
  nft_hash: Remove rhashtable_remove_pprev()
  spinlock: Add spin_lock_bh_nested()
  rhashtable: Per bucket locks & deferred expansion/shrinking
  rhashtable: Supports for nulls marker
  netlink: Lockless lookup with RCU grace period in socket release

 include/linux/list_nulls.h       |   3 +-
 include/linux/rhashtable.h       | 258 ++++++++++++-----
 include/linux/spinlock.h         |   8 +
 include/linux/spinlock_api_smp.h |   2 +
 include/linux/spinlock_api_up.h  |   1 +
 kernel/locking/spinlock.c        |   8 +
 lib/rhashtable.c                 | 607 ++++++++++++++++++++++++++-------------
 net/netfilter/nft_hash.c         |  92 +++---
 net/netlink/af_netlink.c         |  64 ++---
 net/netlink/af_netlink.h         |   1 +
 net/netlink/diag.c               |   4 +-
 11 files changed, 693 insertions(+), 355 deletions(-)

-- 
1.9.3

^ permalink raw reply	[flat|nested] 47+ messages in thread
* [PATCH 0/9 net-next v2] rhashtable: Per bucket locks & deferred table resizing
@ 2015-01-02 22:00 Thomas Graf
  2015-01-02 22:00 ` [PATCH 7/9] rhashtable: Per bucket locks & deferred expansion/shrinking Thomas Graf
  0 siblings, 1 reply; 47+ messages in thread
From: Thomas Graf @ 2015-01-02 22:00 UTC (permalink / raw)
  To: davem
  Cc: netdev, linux-kernel, herbert, paulmck, edumazet,
	john.r.fastabend, josh

Prepares for and introduces per bucket spinlocks and deferred table
resizing. This allows for parallel table mutations in different hash
buckets from atomic context. The resizing occurs in the background
in a separate worker thread while lookups, inserts, and removals can
continue.

Also modified the chain linked list to be terminated with a special
nulls marker to allow entries to move between multiple lists.

Last but not least, reintroduces lockless netlink_lookup() with
deferred Netlink socket destruction to avoid the side effect of
increased netlink_release() runtime.

Thomas Graf (9):
  rhashtable: Do hashing inside of rhashtable_lookup_compare()
  rhashtable: Use rht_obj() instead of manual offset calculation
  rhashtable: Convert bucket iterators to take table and index
  rhashtable: Factor out bucket_tail() function
  nft_hash: Remove rhashtable_remove_pprev()
  spinlock: Add spin_lock_bh_nested()
  rhashtable: Per bucket locks & deferred expansion/shrinking
  rhashtable: Supports for nulls marker
  netlink: Lockless lookup with RCU grace period in socket release

 include/linux/list_nulls.h       |   3 +-
 include/linux/rhashtable.h       | 258 ++++++++++++-----
 include/linux/spinlock.h         |   8 +
 include/linux/spinlock_api_smp.h |   2 +
 include/linux/spinlock_api_up.h  |   1 +
 kernel/locking/spinlock.c        |   8 +
 lib/rhashtable.c                 | 607 ++++++++++++++++++++++++++-------------
 net/netfilter/nft_hash.c         |  92 +++---
 net/netlink/af_netlink.c         |  64 ++---
 net/netlink/af_netlink.h         |   1 +
 net/netlink/diag.c               |   4 +-
 11 files changed, 693 insertions(+), 355 deletions(-)

-- 
1.9.3

^ permalink raw reply	[flat|nested] 47+ messages in thread

end of thread, other threads:[~2015-01-21  5:36 UTC | newest]

Thread overview: 47+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-12-15 12:51 [PATCH 0/9] rhashtable: Per bucket locks & deferred table resizing Thomas Graf
2014-12-15 12:51 ` [PATCH 1/9] rhashtable: Do hashing inside of rhashtable_lookup_compare() Thomas Graf
2014-12-15 12:51 ` [PATCH 2/9] rhashtable: Use rht_obj() instead of manual offset calculation Thomas Graf
2014-12-15 12:51 ` [PATCH 3/9] rhashtable: Convert bucket iterators to take table and index Thomas Graf
2014-12-15 12:51 ` [PATCH 4/9] rhashtable: Factor out bucket_tail() function Thomas Graf
2014-12-15 12:51 ` [PATCH 5/9] nft_hash: Remove rhashtable_remove_pprev() Thomas Graf
2014-12-15 12:51 ` [PATCH 6/9] spinlock: Add spin_lock_bh_nested() Thomas Graf
2014-12-15 12:51 ` [PATCH 7/9] rhashtable: Per bucket locks & deferred expansion/shrinking Thomas Graf
2015-01-16 15:34   ` Patrick McHardy
2015-01-16 15:58     ` Thomas Graf
2015-01-16 16:03       ` Patrick McHardy
2015-01-16 16:15         ` Thomas Graf
2015-01-16 16:32           ` Patrick McHardy
2015-01-16 16:38             ` Thomas Graf
2015-01-16 16:51               ` Patrick McHardy
2015-01-16 16:43             ` David Laight
2015-01-16 16:53               ` Thomas Graf
2015-01-16 18:36                 ` Patrick McHardy
2015-01-16 19:18                   ` Thomas Graf
2015-01-16 19:35                     ` Patrick McHardy
2015-01-16 20:46                       ` Pablo Neira Ayuso
2015-01-16 20:53                         ` Patrick McHardy
2015-01-19  9:01                         ` Paul E. McKenney
2015-01-21  5:23                           ` Herbert Xu
2015-01-21  5:29                             ` Paul E. McKenney
2015-01-21  5:30                               ` Herbert Xu
2015-01-21  5:36                                 ` Paul E. McKenney
2015-01-16 20:49                       ` Herbert Xu
2015-01-16 21:31                         ` Patrick McHardy
2015-01-17  0:33                           ` Herbert Xu
2015-01-17  8:06                             ` Patrick McHardy
2015-01-17  9:32                               ` Herbert Xu
2015-01-17  9:51                                 ` Patrick McHardy
2015-01-17 10:13                                   ` Herbert Xu
2015-01-17 11:56                                     ` Patrick McHardy
2015-01-16 21:36                       ` Thomas Graf
2015-01-16 22:07                         ` Patrick McHardy
2015-01-16 23:34                           ` Thomas Graf
2015-01-17  8:02                             ` Patrick McHardy
2015-01-19 12:58                               ` Thomas Graf
2015-01-19  9:45                         ` David Laight
2014-12-15 12:51 ` [PATCH 8/9] rhashtable: Supports for nulls marker Thomas Graf
2014-12-15 12:51 ` [PATCH 9/9] netlink: Lockless lookup with RCU grace period in socket release Thomas Graf
2014-12-15 13:00 ` [PATCH 0/9 net-next] rhashtable: Per bucket locks & deferred table resizing Thomas Graf
2014-12-15 16:18   ` David Miller
2014-12-15 16:27     ` Thomas Graf
  -- strict thread matches above, loose matches on Subject: below --
2015-01-02 22:00 [PATCH 0/9 net-next v2] " Thomas Graf
2015-01-02 22:00 ` [PATCH 7/9] rhashtable: Per bucket locks & deferred expansion/shrinking Thomas Graf

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).