net: link_watch: prevent starvation when processing linkwatch wq
authorYunsheng Lin <linyunsheng@huawei.com>
Fri, 28 Jun 2019 01:13:19 +0000 (09:13 +0800)
committerDavid S. Miller <davem@davemloft.net>
Tue, 2 Jul 2019 02:02:47 +0000 (19:02 -0700)
commit27ba4059e06b3bbd38a7d944fd5a78cdf47534f4
tree717af81b11215303a6c0a7d5fbfeee53284e1825
parent0d0bcacc54e65540b8a3d680c130b741010e23a3
net: link_watch: prevent starvation when processing linkwatch wq

When user has configured a large number of virtual netdev, such
as 4K vlans, the carrier on/off operation of the real netdev
will also cause it's virtual netdev's link state to be processed
in linkwatch. Currently, the processing is done in a work queue,
which may cause rtnl locking starvation problem and worker
starvation problem for other work queue, such as irqfd_inject wq.

This patch releases the cpu when link watch worker has processed
a fixed number of netdev' link watch event, and schedule the
work queue again when there is still link watch event remaining.

Signed-off-by: Yunsheng Lin <linyunsheng@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/core/link_watch.c