]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemuDomainAttachDeviceDiskLiveInternal: Absorb qemuDomainAttachVirtioDiskDevice
authorPeter Krempa <pkrempa@redhat.com>
Tue, 18 May 2021 13:10:22 +0000 (15:10 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Mon, 24 May 2021 18:38:08 +0000 (20:38 +0200)
Move the specific device setup and address reservation code into the
main hotplug helper as it's just one extra function call.

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

index 93f0bd55e57e0030a6b7e3edefd924477590bab9..0f5f3fbb868df89efb64a553ff9fe81404ba5cd9 100644 (file)
@@ -798,29 +798,6 @@ qemuDomainAttachDiskGeneric(virQEMUDriver *driver,
 }
 
 
-static int
-qemuDomainAttachVirtioDiskDevice(virQEMUDriver *driver,
-                                 virDomainObj *vm,
-                                 virDomainDiskDef *disk)
-{
-    virDomainDeviceDef dev = { VIR_DOMAIN_DEVICE_DISK, { .disk = disk } };
-    bool releaseaddr = false;
-    int rv;
-
-    if (qemuDomainEnsureVirtioAddress(&releaseaddr, vm, &dev, disk->dst) < 0)
-        return -1;
-
-    if ((rv = qemuDomainAttachDiskGeneric(driver, vm, disk)) < 0) {
-        if (rv == -1 && releaseaddr)
-            qemuDomainReleaseDeviceAddress(vm, &disk->info);
-
-        return -1;
-    }
-
-    return 0;
-}
-
-
 int qemuDomainAttachControllerDevice(virQEMUDriver *driver,
                                      virDomainObj *vm,
                                      virDomainControllerDef *controller)
@@ -1005,6 +982,7 @@ qemuDomainAttachDeviceDiskLiveInternal(virQEMUDriver *driver,
     size_t i;
     virDomainDiskDef *disk = dev->data.disk;
     bool releaseUSB = false;
+    bool releaseVirtio = false;
     int ret = -1;
 
     if (disk->device == VIR_DOMAIN_DISK_DEVICE_CDROM ||
@@ -1054,7 +1032,10 @@ qemuDomainAttachDeviceDiskLiveInternal(virQEMUDriver *driver,
         break;
 
     case VIR_DOMAIN_DISK_BUS_VIRTIO:
-        ret = qemuDomainAttachVirtioDiskDevice(driver, vm, disk);
+        if (qemuDomainEnsureVirtioAddress(&releaseVirtio, vm, dev, disk->dst) < 0)
+            goto cleanup;
+
+        ret = qemuDomainAttachDiskGeneric(driver, vm, disk);
         break;
 
     case VIR_DOMAIN_DISK_BUS_SCSI:
@@ -1083,6 +1064,9 @@ qemuDomainAttachDeviceDiskLiveInternal(virQEMUDriver *driver,
 
         if (releaseUSB)
             virDomainUSBAddressRelease(priv->usbaddrs, &disk->info);
+
+        if (releaseVirtio && ret == -1)
+            qemuDomainReleaseDeviceAddress(vm, &disk->info);
     }
 
     return ret;