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

Daniel Henrique Barboza danielhb413 at gmail.com
Thu Sep 12 20:40:33 UTC 2019



On 9/9/19 8:33 AM, Nikolay Shirokovskiy wrote:
> 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>

Reviewed-by: Daniel Henrique Barboza <danielhb413 at gmail.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;
>   




More information about the libvir-list mailing list