1
0
mirror of https://gitlab.com/libvirt/libvirt.git synced 2025-02-03 17:47:15 +03:00

qemuDomainAttachDiskGeneric: Pass the qemu async job type

The qemuDomainAttachDiskGeneric will also be used on startup for
transient disks which share the overlay. The VM startup code passes the
asyncJob around so we need to pass it into qemuDomainAttachDiskGeneric.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
This commit is contained in:
Peter Krempa 2021-05-18 16:18:53 +02:00
parent 2e94002d2a
commit bd47d007a2

View File

@ -689,13 +689,14 @@ qemuDomainChangeEjectableMedia(virQEMUDriver *driver,
static qemuSnapshotDiskContext *
qemuDomainAttachDiskGenericTransient(virDomainObj *vm,
virDomainDiskDef *disk,
GHashTable *blockNamedNodeData)
GHashTable *blockNamedNodeData,
qemuDomainAsyncJob asyncJob)
{
g_autoptr(qemuSnapshotDiskContext) snapctxt = NULL;
g_autoptr(virDomainSnapshotDiskDef) snapdiskdef = NULL;
snapdiskdef = qemuSnapshotGetTransientDiskDef(disk, vm->def->name);
snapctxt = qemuSnapshotDiskContextNew(1, vm, QEMU_ASYNC_JOB_NONE);
snapctxt = qemuSnapshotDiskContextNew(1, vm, asyncJob);
if (qemuSnapshotDiskPrepareOne(snapctxt, disk, snapdiskdef,
blockNamedNodeData, false, false) < 0)
@ -713,7 +714,8 @@ qemuDomainAttachDiskGenericTransient(virDomainObj *vm,
static int
qemuDomainAttachDiskGeneric(virQEMUDriver *driver,
virDomainObj *vm,
virDomainDiskDef *disk)
virDomainDiskDef *disk,
qemuDomainAsyncJob asyncJob)
{
g_autoptr(qemuBlockStorageSourceChainData) data = NULL;
qemuDomainObjPrivate *priv = vm->privateData;
@ -750,7 +752,8 @@ qemuDomainAttachDiskGeneric(virQEMUDriver *driver,
disk->src->readonly = origReadonly;
qemuDomainObjEnterMonitor(driver, vm);
if (qemuDomainObjEnterMonitorAsync(driver, vm, asyncJob) < 0)
return -1;
rc = qemuBlockStorageSourceChainAttach(priv->mon, data);
@ -764,10 +767,10 @@ qemuDomainAttachDiskGeneric(virQEMUDriver *driver,
g_autoptr(qemuBlockStorageSourceAttachData) backend = NULL;
g_autoptr(GHashTable) blockNamedNodeData = NULL;
if (!(blockNamedNodeData = qemuBlockGetNamedNodeData(vm, QEMU_ASYNC_JOB_NONE)))
if (!(blockNamedNodeData = qemuBlockGetNamedNodeData(vm, asyncJob)))
goto rollback;
if (!(transientDiskSnapshotCtxt = qemuDomainAttachDiskGenericTransient(vm, disk, blockNamedNodeData)))
if (!(transientDiskSnapshotCtxt = qemuDomainAttachDiskGenericTransient(vm, disk, blockNamedNodeData, asyncJob)))
goto rollback;
@ -782,7 +785,8 @@ qemuDomainAttachDiskGeneric(virQEMUDriver *driver,
if (!(devstr = qemuBuildDiskDeviceStr(vm->def, disk, priv->qemuCaps)))
goto rollback;
qemuDomainObjEnterMonitor(driver, vm);
if (qemuDomainObjEnterMonitorAsync(driver, vm, asyncJob) < 0)
goto rollback;
if ((rc = qemuDomainAttachExtensionDevice(priv->mon, &disk->info)) == 0)
extensionDeviceAttached = true;
@ -814,7 +818,8 @@ qemuDomainAttachDiskGeneric(virQEMUDriver *driver,
return 0;
rollback:
qemuDomainObjEnterMonitor(driver, vm);
if (qemuDomainObjEnterMonitorAsync(driver, vm, asyncJob) < 0)
return -1;
if (extensionDeviceAttached)
ignore_value(qemuDomainDetachExtensionDevice(priv->mon, &disk->info));
@ -1077,7 +1082,7 @@ qemuDomainAttachDeviceDiskLiveInternal(virQEMUDriver *driver,
if (qemuHotplugAttachManagedPR(driver, vm, disk->src, QEMU_ASYNC_JOB_NONE) < 0)
goto cleanup;
ret = qemuDomainAttachDiskGeneric(driver, vm, disk);
ret = qemuDomainAttachDiskGeneric(driver, vm, disk, QEMU_ASYNC_JOB_NONE);
virDomainAuditDisk(vm, NULL, disk->src, "attach", ret == 0);