diff options
author | Julian Anastasov <ja@ssi.bg> | 2013-03-22 11:46:45 +0200 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2013-04-02 00:23:52 +0200 |
commit | 9be52aba7a7fdaaad82d88b2e66b0d215877a1fd (patch) | |
tree | 0c00c2c54e210ec864618f079a1f5dfb21788341 /net/netfilter/ipvs/ip_vs_sed.c | |
parent | c0d0c0a1c0d35b76f3859b69110f614056d845fe (diff) | |
download | op-kernel-dev-9be52aba7a7fdaaad82d88b2e66b0d215877a1fd.zip op-kernel-dev-9be52aba7a7fdaaad82d88b2e66b0d215877a1fd.tar.gz |
ipvs: convert sed scheduler to rcu
The schedule method now needs _rcu list-traversal
primitive for svc->destinations.
Signed-off-by: Julian Anastasov <ja@ssi.bg>
Signed-off-by: Simon Horman <horms@verge.net.au>
Diffstat (limited to 'net/netfilter/ipvs/ip_vs_sed.c')
-rw-r--r-- | net/netfilter/ipvs/ip_vs_sed.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/net/netfilter/ipvs/ip_vs_sed.c b/net/netfilter/ipvs/ip_vs_sed.c index 89ead246..d011870 100644 --- a/net/netfilter/ipvs/ip_vs_sed.c +++ b/net/netfilter/ipvs/ip_vs_sed.c @@ -79,7 +79,7 @@ ip_vs_sed_schedule(struct ip_vs_service *svc, const struct sk_buff *skb) * new connections. */ - list_for_each_entry(dest, &svc->destinations, n_list) { + list_for_each_entry_rcu(dest, &svc->destinations, n_list) { if (!(dest->flags & IP_VS_DEST_F_OVERLOAD) && atomic_read(&dest->weight) > 0) { least = dest; @@ -94,7 +94,7 @@ ip_vs_sed_schedule(struct ip_vs_service *svc, const struct sk_buff *skb) * Find the destination with the least load. */ nextstage: - list_for_each_entry_continue(dest, &svc->destinations, n_list) { + list_for_each_entry_continue_rcu(dest, &svc->destinations, n_list) { if (dest->flags & IP_VS_DEST_F_OVERLOAD) continue; doh = ip_vs_sed_dest_overhead(dest); |