[libvirt] [PATCH v2 09/11] qemu: don't mess with non mandatory hostdevs on reattaching

Nikolay Shirokovskiy nshirokovskiy at virtuozzo.com
Mon Sep 9 11:33:12 UTC 2019


First I don't want to add code to handle dummy device that is used when
host usb device is not present at the moment of starting/migrating etc.
Second supporting non mandatory policies would require to handle races
when host usb device is plugged to host and libvirtd starts adding
device but if in the meanwhile host usb device it unplugged back then
current code will use dummy device which is not desired in this case.

Signed-off-by: Nikolay Shirokovskiy <nshirokovskiy at virtuozzo.com>
---
 src/qemu/qemu_driver.c  | 8 ++++++++
 src/qemu/qemu_process.c | 4 ++++
 2 files changed, 12 insertions(+)

diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index b646642c99..fe5fd94ac5 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -5337,6 +5337,10 @@ processUSBAddedEvent(virQEMUDriverPtr driver,
         if (hostdev->source.subsys.type != VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_USB)
             continue;
 
+        if (hostdev->startupPolicy == VIR_DOMAIN_STARTUP_POLICY_OPTIONAL ||
+            hostdev->startupPolicy == VIR_DOMAIN_STARTUP_POLICY_REQUISITE)
+            continue;
+
         usbsrc = &hostdev->source.subsys.u.usb;
 
         if (usbsrc->vendor == data->vendor && usbsrc->product == data->product)
@@ -5392,6 +5396,10 @@ processUSBRemovedEvent(virQEMUDriverPtr driver,
         if (hostdev->source.subsys.type != VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_USB)
             continue;
 
+        if (hostdev->startupPolicy == VIR_DOMAIN_STARTUP_POLICY_OPTIONAL ||
+            hostdev->startupPolicy == VIR_DOMAIN_STARTUP_POLICY_REQUISITE)
+            continue;
+
         usbsrc = &hostdev->source.subsys.u.usb;
 
         /* don't mess with devices that don't use stable host addressing
diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
index 8bec36fe2c..d87fb637ac 100644
--- a/src/qemu/qemu_process.c
+++ b/src/qemu/qemu_process.c
@@ -3769,6 +3769,10 @@ qemuProcessReattachUSBDevices(virQEMUDriverPtr driver,
         if (!usbsrc->vendor || !usbsrc->product)
             continue;
 
+        if (hostdev->startupPolicy == VIR_DOMAIN_STARTUP_POLICY_OPTIONAL ||
+            hostdev->startupPolicy == VIR_DOMAIN_STARTUP_POLICY_REQUISITE)
+            continue;
+
         if (!usbsrc->bus && !usbsrc->device) {
             int num;
 
-- 
2.23.0




More information about the libvir-list mailing list