diff options
author | Julian Anastasov <ja@ssi.bg> | 2013-03-22 05:46:45 -0400 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2013-04-01 18:23:52 -0400 |
commit | 9be52aba7a7fdaaad82d88b2e66b0d215877a1fd (patch) | |
tree | 0c00c2c54e210ec864618f079a1f5dfb21788341 /net/netfilter | |
parent | c0d0c0a1c0d35b76f3859b69110f614056d845fe (diff) |
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')
-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 89ead246ed3d..d01187084b7f 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) | |||
79 | * new connections. | 79 | * new connections. |
80 | */ | 80 | */ |
81 | 81 | ||
82 | list_for_each_entry(dest, &svc->destinations, n_list) { | 82 | list_for_each_entry_rcu(dest, &svc->destinations, n_list) { |
83 | if (!(dest->flags & IP_VS_DEST_F_OVERLOAD) && | 83 | if (!(dest->flags & IP_VS_DEST_F_OVERLOAD) && |
84 | atomic_read(&dest->weight) > 0) { | 84 | atomic_read(&dest->weight) > 0) { |
85 | least = dest; | 85 | least = dest; |
@@ -94,7 +94,7 @@ ip_vs_sed_schedule(struct ip_vs_service *svc, const struct sk_buff *skb) | |||
94 | * Find the destination with the least load. | 94 | * Find the destination with the least load. |
95 | */ | 95 | */ |
96 | nextstage: | 96 | nextstage: |
97 | list_for_each_entry_continue(dest, &svc->destinations, n_list) { | 97 | list_for_each_entry_continue_rcu(dest, &svc->destinations, n_list) { |
98 | if (dest->flags & IP_VS_DEST_F_OVERLOAD) | 98 | if (dest->flags & IP_VS_DEST_F_OVERLOAD) |
99 | continue; | 99 | continue; |
100 | doh = ip_vs_sed_dest_overhead(dest); | 100 | doh = ip_vs_sed_dest_overhead(dest); |