qemuDomainDetachDeviceLive: Handle hostevs with unassigned type of address

A <hostdev/> can have <address type='unassigned'/> which means
libvirt manages the device detach from/reattach to the host but
the device is never exposed to the guest. This means that we have
to take a shortcut during hotunplug (e.g. never ask QEMU on the
monitor to detach the device, or never wait for DEVICE_DELETED
event).

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
Michal Privoznik 2022-01-25 11:05:21 +01:00
parent f5de3af7f4
commit 7251307199

View File

@ -6219,6 +6219,10 @@ qemuDomainDetachDeviceLive(virDomainObj *vm,
info->addr.pci.slot, info->addr.pci.function);
return -1;
}
} else if (info->type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_UNASSIGNED) {
/* Unassigned devices are not exposed to QEMU, so remove the device
* explicitly, just like if we received DEVICE_DELETED event.*/
return qemuDomainRemoveDevice(driver, vm, &detach);
}
/*