mirror of
https://github.com/FEX-Emu/linux.git
synced 2025-02-11 06:16:10 +00:00
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>
This commit is contained in:
parent
c0d0c0a1c0
commit
9be52aba7a
@ -79,7 +79,7 @@ ip_vs_sed_schedule(struct ip_vs_service *svc, const struct sk_buff *skb)
|
|||||||
* new connections.
|
* 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) &&
|
if (!(dest->flags & IP_VS_DEST_F_OVERLOAD) &&
|
||||||
atomic_read(&dest->weight) > 0) {
|
atomic_read(&dest->weight) > 0) {
|
||||||
least = dest;
|
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.
|
* Find the destination with the least load.
|
||||||
*/
|
*/
|
||||||
nextstage:
|
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)
|
if (dest->flags & IP_VS_DEST_F_OVERLOAD)
|
||||||
continue;
|
continue;
|
||||||
doh = ip_vs_sed_dest_overhead(dest);
|
doh = ip_vs_sed_dest_overhead(dest);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user