On 03/21/2016 02:11 AM, Chunyan Liu wrote:
For those VF allocated from a network pool, we need to set its
backend
to be VIR_DOMAIN_HOSTDEV_PCI_BACKEND_XEN so that later work can be
correct.
Signed-off-by: Chunyan Liu <cyliu(a)suse.com>
---
src/libxl/libxl_driver.c | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c
index 328dac8..d7004fd 100644
--- a/src/libxl/libxl_driver.c
+++ b/src/libxl/libxl_driver.c
@@ -3145,13 +3145,23 @@ libxlDomainAttachNetDevice(libxlDriverPrivatePtr driver,
}
if (actualType == VIR_DOMAIN_NET_TYPE_HOSTDEV) {
+ virDomainHostdevDefPtr hostdev = virDomainNetGetActualHostdev(net);
+ virDomainHostdevSubsysPCIPtr pcisrc = &hostdev->source.subsys.u.pci;
+
+ /* For those just allocated from a network pool whose backend is
+ * still VIR_DOMAIN_HOSTDEV_PCI_BACKEND_DEFAULT, we need to set
+ * backend correctly.
+ */
+ if (hostdev->mode == VIR_DOMAIN_HOSTDEV_MODE_SUBSYS &&
+ hostdev->source.subsys.type == VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI)
+ pcisrc->backend = VIR_DOMAIN_HOSTDEV_PCI_BACKEND_XEN;
+
/* This is really a "smart hostdev", so it should be attached
* as a hostdev (the hostdev code will reach over into the
* netdev-specific code as appropriate), then also added to
* the nets list (see out:) if successful.
*/
- ret = libxlDomainAttachHostDevice(driver, vm,
- virDomainNetGetActualHostdev(net));
+ ret = libxlDomainAttachHostDevice(driver, vm, hostdev);
ACK, will push shortly. I'm still looking at 4/6 and 6/6.
Regards,
Jim