]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemuDomainRemoveHostDevice: Use new infrastructure for (i)SCSI
authorPeter Krempa <pkrempa@redhat.com>
Fri, 19 Jun 2020 13:51:06 +0000 (15:51 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Fri, 17 Jul 2020 05:41:21 +0000 (07:41 +0200)
Similarly to previous commits, modify the hostdev detach code to use
blockdev infrastructure to detach (i)SCSI hostdevs.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/qemu/qemu_hotplug.c

index 9fd4d58a7fb347a1645a7ddce6a5f0d7afc38cfc..26912334d2813b97498f6c1766297cd84893d399 100644 (file)
@@ -4442,31 +4442,17 @@ qemuDomainRemoveHostDevice(virQEMUDriverPtr driver,
     virDomainNetDefPtr net = NULL;
     size_t i;
     qemuDomainObjPrivatePtr priv = vm->privateData;
-    g_autofree char *drivealias = NULL;
-    const char *secretObjAlias = NULL;
 
     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_SCSI) {
-        virDomainHostdevSubsysSCSIPtr scsisrc = &hostdev->source.subsys.u.scsi;
-        virDomainHostdevSubsysSCSIiSCSIPtr iscsisrc = &scsisrc->u.iscsi;
+        g_autoptr(qemuBlockStorageSourceAttachData) detachscsi = NULL;
 
-        if (!(drivealias = qemuAliasFromHostdev(hostdev)))
-            return -1;
-
-        if (scsisrc->protocol == VIR_DOMAIN_HOSTDEV_SCSI_PROTOCOL_TYPE_ISCSI) {
-            qemuDomainStorageSourcePrivatePtr srcPriv = QEMU_DOMAIN_STORAGE_SOURCE_PRIVATE(iscsisrc->src);
-            if (srcPriv && srcPriv->secinfo)
-                secretObjAlias = srcPriv->secinfo->s.aes.alias;
-        }
+        detachscsi = qemuBuildHostdevSCSIDetachPrepare(hostdev, priv->qemuCaps);
 
         qemuDomainObjEnterMonitor(driver, vm);
-        qemuMonitorDriveDel(priv->mon, drivealias);
-
-        if (secretObjAlias)
-            ignore_value(qemuMonitorDelObject(priv->mon, secretObjAlias, false));
-
+        qemuBlockStorageSourceAttachRollback(priv->mon, detachscsi);
         if (qemuDomainObjExitMonitor(driver, vm) < 0)
             return -1;
     }