diff options
author | Eric Dumazet <eric.dumazet@gmail.com> | 2010-10-14 20:56:39 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-10-17 13:53:16 -0700 |
commit | 19f572565ef66a0439574fd2299a7c804147e133 (patch) | |
tree | 09f9655a4e0d61986cb5ff88c503651974f47c65 /net/ipv4/fib_lookup.h | |
parent | 117a8cdea3647e8e11fac10d14eafefc20f9bda5 (diff) | |
download | op-kernel-dev-19f572565ef66a0439574fd2299a7c804147e133.zip op-kernel-dev-19f572565ef66a0439574fd2299a7c804147e133.tar.gz |
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 b9c9a9f..5072d8e 100644 --- a/net/ipv4/fib_lookup.h +++ b/net/ipv4/fib_lookup.h @@ -12,9 +12,7 @@ struct fib_alias { u8 fa_type; u8 fa_scope; u8 fa_state; -#ifdef CONFIG_IP_FIB_TRIE struct rcu_head rcu; -#endif }; #define FA_S_ACCESSED 0x01 |