]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemuDomainAttachDiskGeneric: Move PR helper attach into qemuDomainAttachDeviceDiskLiv...
authorPeter Krempa <pkrempa@redhat.com>
Fri, 21 May 2021 08:37:36 +0000 (10:37 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Mon, 24 May 2021 18:38:08 +0000 (20:38 +0200)
Similarly to previous refactors we want to move all hotplug related
setup which isn't strictly relevant to attaching the disk into
qemuDomainAttachDeviceDiskLiveInternal.

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 a47ebc1f7f5697203c2c411d6aecb355cf657ed6..6bfc900e3f88c90e9e79435c7f7879adaf3143bd 100644 (file)
@@ -724,9 +724,6 @@ qemuDomainAttachDiskGeneric(virQEMUDriver *driver,
     if (!(devstr = qemuBuildDiskDeviceStr(vm->def, disk, priv->qemuCaps)))
         return -1;
 
-    if (qemuHotplugAttachManagedPR(driver, vm, disk->src, QEMU_ASYNC_JOB_NONE) < 0)
-        return -1;
-
     qemuDomainObjEnterMonitor(driver, vm);
 
     if (qemuBlockStorageSourceChainAttach(priv->mon, data) < 0)
@@ -766,10 +763,6 @@ qemuDomainAttachDiskGeneric(virQEMUDriver *driver,
     if (qemuDomainObjExitMonitor(driver, vm) < 0)
         return -2;
 
-    if (virStorageSourceChainHasManagedPR(disk->src) &&
-        qemuHotplugRemoveManagedPR(driver, vm, QEMU_ASYNC_JOB_NONE) < 0)
-        return -2;
-
     return -1;
 }
 
@@ -1026,6 +1019,9 @@ qemuDomainAttachDeviceDiskLiveInternal(virQEMUDriver *driver,
     if (qemuDomainPrepareDiskSource(disk, priv, cfg) < 0)
         goto cleanup;
 
+    if (qemuHotplugAttachManagedPR(driver, vm, disk->src, QEMU_ASYNC_JOB_NONE) < 0)
+        goto cleanup;
+
     ret = qemuDomainAttachDiskGeneric(driver, vm, disk);
 
     virDomainAuditDisk(vm, NULL, disk->src, "attach", ret == 0);
@@ -1047,6 +1043,9 @@ qemuDomainAttachDeviceDiskLiveInternal(virQEMUDriver *driver,
 
         if (releaseSeclabel)
             ignore_value(qemuDomainStorageSourceChainAccessRevoke(driver, vm, disk->src));
+
+        if (virStorageSourceChainHasManagedPR(disk->src))
+            ignore_value(qemuHotplugRemoveManagedPR(driver, vm, QEMU_ASYNC_JOB_NONE));
     }
     qemuDomainSecretDiskDestroy(disk);