[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [RFC] libxl hotplug / unplug emulated devices
On Fri, May 20, 2016 at 06:45:04PM +0100, Wei Liu wrote: > On Fri, May 20, 2016 at 05:38:44PM +0100, Ian Jackson wrote: > > Wei Liu writes ("[RFC] libxl hotplug / unplug emulated devices"): > > > Recently I got a report on xen-users@ about xl network-attach not > > > working for HVM guest. > > > > > > I try to use > > > xl network-attach jessie-hvm 'bridge=xenbr0' > > > and vif-bridge script complains that it can't add vifXX-emu to bridge. > > > > > > The underlying issue is that the vif spec provided defaults to > > > emulated nic, but libxl only populates a pv nic but doesn't call out > > > via QMP to QEMU to populate one. Note that this issue not only affects > > > nic device but essentially all device types. > > > > Is it really sensible to offer emulated nic hotplug ? That'd be > > presented to the guest as pci hotplug, I guess ? > > > > > I also experimented with block device: > > > xl block-attach jessie-hvm 'phy:/dev/DATA/disk,hdb,w' > > > and it succeed, only pv disk is populated though. > > > > That's what I would have expected. > > > > Maybe the fix should be that xl network-attach should default hotplug > > nics to pv only. > > > > Here is a patch to do this. :-) > > ---8<--- > From 0a0a0ac76f825983bb13d70e46a59cabb05ed77b Mon Sep 17 00:00:00 2001 > From: Wei Liu <wei.liu2@xxxxxxxxxx> > Date: Fri, 20 May 2016 18:16:05 +0100 > Subject: [PATCH for-4.7] libxl: nic type defaults to vif in hotplug for hvm > guest > > We don't support plugging in emulated nic to a HVM guest. > > The "update_json" flag is only set when doing hotplug, so use that as an > indicator in libxl__device_nic_add. The new hotplug flag to _setdefault > function should be false in all other locations. > > This then requires saving nic type in JSON file, because we don't want > the receiving end to recalculate the nic type. > > Signed-off-by: Wei Liu <wei.liu2@xxxxxxxxxx> > --- > tools/libxl/libxl.c | 6 +++--- > tools/libxl/libxl_create.c | 3 ++- > tools/libxl/libxl_dm.c | 3 ++- > tools/libxl/libxl_internal.h | 3 ++- > 4 files changed, 9 insertions(+), 6 deletions(-) > > diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c > index c39d745..62e9294 100644 > --- a/tools/libxl/libxl.c > +++ b/tools/libxl/libxl.c > @@ -3319,7 +3319,7 @@ out: > > /******************************************************************************/ > > int libxl__device_nic_setdefault(libxl__gc *gc, libxl_device_nic *nic, > - uint32_t domid) > + uint32_t domid, bool hotplug) > { > int rc; > > @@ -3358,7 +3358,7 @@ int libxl__device_nic_setdefault(libxl__gc *gc, > libxl_device_nic *nic, > case LIBXL_DOMAIN_TYPE_HVM: > if (!nic->nictype) { > if (libxl__device_model_version_running(gc, domid) == > - LIBXL_DEVICE_MODEL_VERSION_NONE) > + LIBXL_DEVICE_MODEL_VERSION_NONE || hotplug) > nic->nictype = LIBXL_NIC_TYPE_VIF; @@ -3357,8 +3357,9 @@ int libxl__device_nic_setdefault(libxl__gc *gc, libxl_device_nic *nic, switch (libxl__domain_type(gc, domid)) { case LIBXL_DOMAIN_TYPE_HVM: if (!nic->nictype) { - if (libxl__device_model_version_running(gc, domid) == - LIBXL_DEVICE_MODEL_VERSION_NONE) + if (hotplug || + (libxl__device_model_version_running(gc, domid) == + LIBXL_DEVICE_MODEL_VERSION_NONE)) nic->nictype = LIBXL_NIC_TYPE_VIF; I changed the snippet to above and will push this patch soon. Wei. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |