[libvirt] [PATCH] qemu: restore non-pci hostdev labels after detach
Laine Stump
laine at laine.org
Fri Jun 17 15:26:10 UTC 2016
On 06/17/2016 09:34 AM, Ján Tomko wrote:
> Commit 409de00 changed the logic to only match PCI devices
> while moving this before Remove*HostDevice calls.
>
> https://bugzilla.redhat.com/show_bug.cgi?id=1342874
> ---
> src/qemu/qemu_hotplug.c | 17 ++++++++++-------
> 1 file changed, 10 insertions(+), 7 deletions(-)
>
> diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c
> index e1c3de7..39d49d4 100644
> --- a/src/qemu/qemu_hotplug.c
> +++ b/src/qemu/qemu_hotplug.c
> @@ -2952,10 +2952,16 @@ qemuDomainRemoveHostDevice(virQEMUDriverPtr driver,
> int ret = -1;
> qemuDomainObjPrivatePtr priv = vm->privateData;
> char *drivestr = NULL;
> + bool is_vfio = false;
>
> VIR_DEBUG("Removing host device %s from domain %p %s",
> hostdev->info->alias, vm, vm->def->name);
>
> + if (hostdev->source.subsys.type == VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI) {
> + int backend = hostdev->source.subsys.u.pci.backend;
> + is_vfio = backend == VIR_DOMAIN_HOSTDEV_PCI_BACKEND_VFIO;
> + }
> +
> if (hostdev->source.subsys.type == VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI) {
> /* build the actual drive id string as generated during
> * qemuBuildSCSIHostdevDrvStr that is passed to qemu */
> @@ -2993,13 +2999,10 @@ qemuDomainRemoveHostDevice(virQEMUDriverPtr driver,
>
> virDomainAuditHostdev(vm, hostdev, "detach", true);
>
> - if (hostdev->source.subsys.type == VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI &&
> - hostdev->source.subsys.u.pci.backend !=
> - VIR_DOMAIN_HOSTDEV_PCI_BACKEND_VFIO) {
> - if (virSecurityManagerRestoreHostdevLabel(driver->securityManager,
> - vm->def, hostdev, NULL) < 0)
> - VIR_WARN("Failed to restore host device labelling");
> - }
> + if (!is_vfio &&
> + virSecurityManagerRestoreHostdevLabel(driver->securityManager,
> + vm->def, hostdev, NULL) < 0)
> + VIR_WARN("Failed to restore host device labelling");
>
> if (qemuTeardownHostdevCgroup(vm, hostdev) < 0)
> VIR_WARN("Failed to remove host device cgroup ACL");
ACK.
More information about the libvir-list
mailing list