Hi Julian On Wed, 2013-03-06 at 10:42 +0200, Julian Anastasov wrote: > 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. Have you test this in a network namespace ? i.e. kill the namespace with heave traffic through it From what I remember this was a tricky area... I have some test cases for this, should I run them ? > Signed-off-by: Julian Anastasov <ja@xxxxxx> > --- > net/netfilter/ipvs/ip_vs_ctl.c | 8 +++----- > 1 files changed, 3 insertions(+), 5 deletions(-) > > diff --git a/net/netfilter/ipvs/ip_vs_ctl.c b/net/netfilter/ipvs/ip_vs_ctl.c > index c68198b..76fc8f2 100644 > --- a/net/netfilter/ipvs/ip_vs_ctl.c > +++ b/net/netfilter/ipvs/ip_vs_ctl.c > @@ -1512,10 +1512,8 @@ __ip_vs_dev_reset(struct ip_vs_dest *dest, struct net_device *dev) > spin_unlock_bh(&dest->dst_lock); > > } > -/* > - * Netdev event receiver > - * Currently only NETDEV_UNREGISTER is handled, i.e. if we hold a reference to > - * a device that is "unregister" it must be released. > +/* Netdev event receiver > + * Currently only NETDEV_DOWN is handled to release refs to cached dsts > */ > static int ip_vs_dst_event(struct notifier_block *this, unsigned long event, > void *ptr) > @@ -1527,7 +1525,7 @@ static int ip_vs_dst_event(struct notifier_block *this, unsigned long event, > struct ip_vs_dest *dest; > unsigned int idx; > > - if (event != NETDEV_UNREGISTER || !ipvs) > + if (event != NETDEV_DOWN || !ipvs) > return NOTIFY_DONE; > IP_VS_DBG(3, "%s() dev=%s\n", __func__, dev->name); > EnterFunction(2); Regards Hans
Attachment:
smime.p7s
Description: S/MIME cryptographic signature