diff options
author | Eric Dumazet <eric.dumazet@gmail.com> | 2010-10-14 16:56:39 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-10-17 16:53:16 -0400 |
commit | 19f572565ef66a0439574fd2299a7c804147e133 (patch) | |
tree | 09f9655a4e0d61986cb5ff88c503651974f47c65 /net/ipv4/fib_lookup.h | |
parent | 117a8cdea3647e8e11fac10d14eafefc20f9bda5 (diff) |
fib_hash: RCU conversion phase 2
Get rid of fib_hash_lock rwlock.
The fn_zone hash table resize is the noticeable part of this patch.
I added a seqlock per fn_zone, so that readers can restart their lookup
in the (very rare) case a writer expanded the hash table.
Add rcu heads in fib_alias and fib_node, use call_rcu() to defer their
freeing, and use appropriate _rcu list manipulations.
Stress test (160.000.000 udp frames sent, IP route cache disabled to
mimic DDOS attack, FIB_HASH)
Before:
real 0m41.191s
user 0m13.137s
sys 8m55.241s
After:
real 0m38.091s
user 0m13.189s
sys 7m53.018s
Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4/fib_lookup.h')
-rw-r--r-- | net/ipv4/fib_lookup.h | 2 |
1 files changed, 0 insertions, 2 deletions
diff --git a/net/ipv4/fib_lookup.h b/net/ipv4/fib_lookup.h index b9c9a9f2aee5..5072d8effd5d 100644 --- a/net/ipv4/fib_lookup.h +++ b/net/ipv4/fib_lookup.h | |||
@@ -12,9 +12,7 @@ struct fib_alias { | |||
12 | u8 fa_type; | 12 | u8 fa_type; |
13 | u8 fa_scope; | 13 | u8 fa_scope; |
14 | u8 fa_state; | 14 | u8 fa_state; |
15 | #ifdef CONFIG_IP_FIB_TRIE | ||
16 | struct rcu_head rcu; | 15 | struct rcu_head rcu; |
17 | #endif | ||
18 | }; | 16 | }; |
19 | 17 | ||
20 | #define FA_S_ACCESSED 0x01 | 18 | #define FA_S_ACCESSED 0x01 |