ipvs: prefer NETDEV_DOWN event to free cached dsts
The real server becomes unreachable on down event, no need to wait device unregistration. Should help in releasing dsts early before dst->dev is replaced with lo. Signed-off-by: Julian Anastasov <ja@ssi.bg> Signed-off by: Hans Schillstrom <hans@schillstrom.com> Signed-off-by: Simon Horman <horms@verge.net.au>
This commit is contained in:
Родитель
c90558dae5
Коммит
313eae637f
|
@ -1514,10 +1514,8 @@ __ip_vs_dev_reset(struct ip_vs_dest *dest, struct net_device *dev)
|
||||||
spin_unlock_bh(&dest->dst_lock);
|
spin_unlock_bh(&dest->dst_lock);
|
||||||
|
|
||||||
}
|
}
|
||||||
/*
|
/* Netdev event receiver
|
||||||
* Netdev event receiver
|
* Currently only NETDEV_DOWN is handled to release refs to cached dsts
|
||||||
* Currently only NETDEV_UNREGISTER is handled, i.e. if we hold a reference to
|
|
||||||
* a device that is "unregister" it must be released.
|
|
||||||
*/
|
*/
|
||||||
static int ip_vs_dst_event(struct notifier_block *this, unsigned long event,
|
static int ip_vs_dst_event(struct notifier_block *this, unsigned long event,
|
||||||
void *ptr)
|
void *ptr)
|
||||||
|
@ -1529,7 +1527,7 @@ static int ip_vs_dst_event(struct notifier_block *this, unsigned long event,
|
||||||
struct ip_vs_dest *dest;
|
struct ip_vs_dest *dest;
|
||||||
unsigned int idx;
|
unsigned int idx;
|
||||||
|
|
||||||
if (event != NETDEV_UNREGISTER || !ipvs)
|
if (event != NETDEV_DOWN || !ipvs)
|
||||||
return NOTIFY_DONE;
|
return NOTIFY_DONE;
|
||||||
IP_VS_DBG(3, "%s() dev=%s\n", __func__, dev->name);
|
IP_VS_DBG(3, "%s() dev=%s\n", __func__, dev->name);
|
||||||
EnterFunction(2);
|
EnterFunction(2);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче