• Daniel Borkmann's avatar
    rhashtable: kill ht->shift atomic operations · a5b6846f
    Daniel Borkmann authored
    Commit c0c09bfd ("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: default avatarDaniel Borkmann <daniel@iogearbox.net>
    Cc: Ying Xue <ying.xue@windriver.com>
    Acked-by: default avatarThomas Graf <tgraf@suug.ch>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    a5b6846f
rhashtable.h 12.2 KB