1. 13 Jan, 2015 4 commits
    • David S. Miller's avatar
      Merge branch 'rhashtable-next' · 52e3ad9f
      David S. Miller authored
      
      
      Ying Xue says:
      
      ====================
      remove nl_sk_hash_lock from netlink socket
      
      After tipc socket successfully avoids the involvement of an extra lock
      with rhashtable_lookup_insert(), it's possible for netlink socket to
      remove its hash socket lock now. But as netlink socket needs a compare
      function to look for an object, we first introduce a new function
      called rhashtable_lookup_compare_insert() in commit #1 which is
      implemented based on original rhashtable_lookup_insert(). We
      subsequently remove nl_sk_hash_lock from netlink socket with the new
      introduced function in commit #2. Lastly, as Thomas requested, we add
      commit #3 to indicate the implementation of what the grow and shrink
      decision function must enforce min/max shift.
      
      v2:
       As Thomas pointed out, there was a race between checking portid and
       then setting it in commit #2. Now use socket lock to make the process
       of both checking and setting portid atomic, and then eliminate the
       race.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      52e3ad9f
    • Ying Xue's avatar
      rhashtable: add a note for grow and shrink decision functions · 6f73d3b1
      Ying Xue authored
      As commit c0c09bfd
      
       ("rhashtable: avoid unnecessary wakeup for
      worker queue") moves condition statements of verifying whether hash
      table size exceeds its maximum threshold or reaches its minimum
      threshold from resizing functions to resizing decision functions,
      we should add a note in rhashtable.h to indicate the implementation
      of what the grow and shrink decision function must enforce min/max
      shift, otherwise, it's failed to take min/max shift's set watermarks
      into effect.
      Signed-off-by: default avatarYing Xue <ying.xue@windriver.com>
      Cc: Thomas Graf <tgraf@suug.ch>
      Acked-by: default avatarThomas Graf <tgraf@suug.ch>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      6f73d3b1
    • Ying Xue's avatar
      netlink: eliminate nl_sk_hash_lock · c5adde94
      Ying Xue authored
      
      
      As rhashtable_lookup_compare_insert() can guarantee the process
      of search and insertion is atomic, it's safe to eliminate the
      nl_sk_hash_lock. After this, object insertion or removal will
      be protected with per bucket lock on write side while object
      lookup is guarded with rcu read lock on read side.
      Signed-off-by: default avatarYing Xue <ying.xue@windriver.com>
      Cc: Thomas Graf <tgraf@suug.ch>
      Acked-by: default avatarThomas Graf <tgraf@suug.ch>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c5adde94
    • Ying Xue's avatar
      rhashtable: involve rhashtable_lookup_compare_insert routine · 7a868d1e
      Ying Xue authored
      
      
      Introduce a new function called rhashtable_lookup_compare_insert()
      which is very similar to rhashtable_lookup_insert(). But the former
      makes use of users' given compare function to look for an object,
      and then inserts it into hash table if found. As the entire process
      of search and insertion is under protection of per bucket lock, this
      can help users to avoid the involvement of extra lock.
      Signed-off-by: default avatarYing Xue <ying.xue@windriver.com>
      Cc: Thomas Graf <tgraf@suug.ch>
      Acked-by: default avatarThomas Graf <tgraf@suug.ch>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      7a868d1e
  2. 12 Jan, 2015 36 commits