diff options
author | Eric Dumazet <eric.dumazet@gmail.com> | 2010-06-16 00:52:13 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-06-16 14:55:39 -0400 |
commit | 317fe0e6c5dc9448bcef41a2e31fecfd3dba7f55 (patch) | |
tree | c2a042e1c8bb96b7fdeadf658309ead1b6e8dabc /net/ipv4/inetpeer.c | |
parent | fdb93f8ac39aa5902f3d264edd50dffcabfdd13b (diff) |
inetpeer: restore small inet_peer structures
Addition of rcu_head to struct inet_peer added 16bytes on 64bit arches.
Thats a bit unfortunate, since old size was exactly 64 bytes.
This can be solved, using an union between this rcu_head an four fields,
that are normally used only when a refcount is taken on inet_peer.
rcu_head is used only when refcnt=-1, right before structure freeing.
Add a inet_peer_refcheck() function to check this assertion for a while.
We can bring back SLAB_HWCACHE_ALIGN qualifier in kmem cache creation.
Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4/inetpeer.c')
-rw-r--r-- | net/ipv4/inetpeer.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/net/ipv4/inetpeer.c b/net/ipv4/inetpeer.c index 349249fad2db..9ffa24b9a804 100644 --- a/net/ipv4/inetpeer.c +++ b/net/ipv4/inetpeer.c | |||
@@ -64,7 +64,7 @@ | |||
64 | * usually under some other lock to prevent node disappearing | 64 | * usually under some other lock to prevent node disappearing |
65 | * dtime: unused node list lock | 65 | * dtime: unused node list lock |
66 | * v4daddr: unchangeable | 66 | * v4daddr: unchangeable |
67 | * ip_id_count: idlock | 67 | * ip_id_count: atomic value (no lock needed) |
68 | */ | 68 | */ |
69 | 69 | ||
70 | static struct kmem_cache *peer_cachep __read_mostly; | 70 | static struct kmem_cache *peer_cachep __read_mostly; |
@@ -129,7 +129,7 @@ void __init inet_initpeers(void) | |||
129 | 129 | ||
130 | peer_cachep = kmem_cache_create("inet_peer_cache", | 130 | peer_cachep = kmem_cache_create("inet_peer_cache", |
131 | sizeof(struct inet_peer), | 131 | sizeof(struct inet_peer), |
132 | 0, SLAB_PANIC, | 132 | 0, SLAB_HWCACHE_ALIGN | SLAB_PANIC, |
133 | NULL); | 133 | NULL); |
134 | 134 | ||
135 | /* All the timers, started at system startup tend | 135 | /* All the timers, started at system startup tend |