[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] reboot driver domain, vifX.Y = NO-CARRIER?

On 27/04/18 16:35, Jason Cooper wrote:
> Hi Andrew,
> On Fri, Apr 27, 2018 at 04:11:39PM +0100, Andrew Cooper wrote:
>> On 27/04/18 16:03, Jason Cooper wrote:
>>> The problem occurs when I reboot a driver domain.  Regardless of the
>>> type of guest attached to it, I'm unable to re-establish connectivity
>>> between the driver domain and the re-attached guest.  e.g. I reboot
>>> GW/FW, then re-attach VM1, VM2 and the rest.  No matter how I do it, I
>>> get:
>>> $ ip link
>>> ...
>>> 11: vif20.1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq master 
>>> br10 qlen 32
>>>     link/ether fe:ff:ff:ff:ff:ff brd ff:ff:ff:ff:ff:ff
>>> In the driver domain.  At this point, absolutely no packets flow between
>>> the two VMs.  Not even ARP.  The only solution, so far, is to unnecessarily
>>> reboot the PV guests.  After that, networking is fine.
>>> Any thoughts?
>> The underlying problem is that the frontend/backend setup in xenstore
>> encodes the domid in path, and changing that isn't transparent to the
>> guest at all.
> Oh joy.  Would seem to make more send to use the domain name or the
> uuid...

domids are also used in the grant and event hypercall interfaces with Xen.

There is no way this horse is being put back in its stable...

>> The best idea we came up with was to reboot the driver domain and reuse
>> its old domid, at which point all the xenstore paths would remain
>> valid.  There is support in Xen for explicitly choosing the domid of a
>> domain, but I don't think that it is wired up sensibly in xl.
> hmmm, yes.  It's not wired up at all afaict.  Mind giving me a hint on
> how to reuse the domid?

xc_domain_create() takes a domid value by pointer.  Passing a value
other than zero will cause Xen to use that domid, rather than by
searching for the next free domid.

diff --git a/tools/libxl/libxl_create.c b/tools/libxl/libxl_create.c
index b5e27a7..7866092 100644
--- a/tools/libxl/libxl_create.c
+++ b/tools/libxl/libxl_create.c
@@ -583,6 +583,7 @@ int libxl__domain_make(libxl__gc *gc,
libxl_domain_config *d_config,
             goto out;
+        *domid = atoi(getenv("OVERRIDE_DOMID") ?: "0");
         ret = xc_domain_create(ctx->xch, info->ssidref, handle, flags,
         if (ret < 0) {

This gross hack may get you somewhere (Entirely untested).


Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.