[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH net-next v4] xen-netfront: delay gARP until backend switches to Connected
>>> On 11.12.11 at 12:48, Laszlo Ersek <lersek@xxxxxxxxxx> wrote: > After a guest is live migrated, the xen-netfront driver emits a gratuitous > ARP message, so that networking hardware on the target host's subnet can > take notice, and public routing to the guest is re-established. However, > if the packet appears on the backend interface before the backend is added > to the target host's bridge, the packet is lost, and the migrated guest's > peers become unable to talk to the guest. > > A sufficient two-parts condition to prevent the above is: > > (1) ensure that the backend only moves to Connected xenbus state after its > hotplug scripts completed, ie. the netback interface got added to the > bridge; and > > (2) ensure the frontend only queues the gARP when it sees the backend move > to Connected. > > These two together provide complete ordering. Sub-condition (1) is already > satisfied by commit f942dc2552b8 in Linus' tree, based on commit > 6b0b80ca7165 from [1]. > > In general, the full condition is sufficient, not necessary, because, > according to [2], live migration has been working for a long time without > satisfying sub-condition (2). However, after 6b0b80ca7165 was backported > to the RHEL-5 host to ensure (1), (2) still proved necessary in the RHEL-6 > guest. This patch intends to provide (2) for upstream. > > The Reviewed-by line comes from [3]. > > [1] > git://xenbits.xen.org/people/ianc/linux-2.6.git#upstream/dom0/backend/netbac > k-history > [2] http://old-list-archives.xen.org/xen-devel/2011-06/msg01969.html > [3] http://old-list-archives.xen.org/xen-devel/2011-07/msg00484.html > > Signed-off-by: Laszlo Ersek <lersek@xxxxxxxxxx> > Reviewed-by: Ian Campbell <ian.campbell@xxxxxxxxxx> Wouldn't all of this equally apply to the 2.6.18 kernel and its derivates? Jan > --- > drivers/net/xen-netfront.c | 4 +++- > 1 files changed, 3 insertions(+), 1 deletions(-) > > diff --git a/drivers/net/xen-netfront.c b/drivers/net/xen-netfront.c > index d29365a..f033656 100644 > --- a/drivers/net/xen-netfront.c > +++ b/drivers/net/xen-netfront.c > @@ -1646,7 +1646,6 @@ static void netback_changed(struct xenbus_device *dev, > case XenbusStateInitialised: > case XenbusStateReconfiguring: > case XenbusStateReconfigured: > - case XenbusStateConnected: > case XenbusStateUnknown: > case XenbusStateClosed: > break; > @@ -1657,6 +1656,9 @@ static void netback_changed(struct xenbus_device *dev, > if (xennet_connect(netdev) != 0) > break; > xenbus_switch_state(dev, XenbusStateConnected); > + break; > + > + case XenbusStateConnected: > netif_notify_peers(netdev); > break; > > -- > 1.7.4.4 > > > _______________________________________________ > Xen-devel mailing list > Xen-devel@xxxxxxxxxxxxxxxxxxx > http://lists.xensource.com/xen-devel _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |