rhashtable: ensure cache line alignment on bucket_table
authorEric Dumazet <edumazet@google.com>
Fri, 20 Feb 2015 14:48:57 +0000 (06:48 -0800)
committerDavid S. Miller <davem@davemloft.net>
Sun, 22 Feb 2015 02:59:57 +0000 (21:59 -0500)
struct bucket_table contains mostly read fields :

size, locks_mask, locks.

Make sure these are not sharing a cache line with buckets[]

Signed-off-by: Eric Dumazet <edumazet@google.com>
Acked-by: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: Thomas Graf <tgraf@suug.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/rhashtable.h

index 58851275fed98c352fdd4995e95f1ebe806649e7..cb2104be2135d2278f37cc8f87c0f21d08107987 100644 (file)
@@ -54,10 +54,11 @@ struct rhash_head {
  * @buckets: size * hash buckets
  */
 struct bucket_table {
-       size_t                          size;
-       unsigned int                    locks_mask;
-       spinlock_t                      *locks;
-       struct rhash_head __rcu         *buckets[];
+       size_t                  size;
+       unsigned int            locks_mask;
+       spinlock_t              *locks;
+
+       struct rhash_head __rcu *buckets[] ____cacheline_aligned_in_smp;
 };
 
 typedef u32 (*rht_hashfn_t)(const void *data, u32 len, u32 seed);