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

qemuSnapshotDiskPrepare/Cleanup: simplify passing of 'driver' and 'blockdev'

Both can be fetched from 'vm'.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
Peter Krempa 2020-09-21 14:26:52 +02:00
parent eb4aa7b109
commit a09c82cbd5

View File

@ -792,10 +792,11 @@ typedef qemuSnapshotDiskData *qemuSnapshotDiskDataPtr;
static void static void
qemuSnapshotDiskCleanup(qemuSnapshotDiskDataPtr data, qemuSnapshotDiskCleanup(qemuSnapshotDiskDataPtr data,
size_t ndata, size_t ndata,
virQEMUDriverPtr driver,
virDomainObjPtr vm, virDomainObjPtr vm,
qemuDomainAsyncJob asyncJob) qemuDomainAsyncJob asyncJob)
{ {
qemuDomainObjPrivatePtr priv = vm->privateData;
virQEMUDriverPtr driver = priv->driver;
virErrorPtr orig_err; virErrorPtr orig_err;
size_t i; size_t i;
@ -931,18 +932,19 @@ qemuSnapshotDiskPrepareOneBlockdev(virQEMUDriverPtr driver,
static int static int
qemuSnapshotDiskPrepareOne(virQEMUDriverPtr driver, qemuSnapshotDiskPrepareOne(virDomainObjPtr vm,
virDomainObjPtr vm,
virQEMUDriverConfigPtr cfg, virQEMUDriverConfigPtr cfg,
virDomainDiskDefPtr disk, virDomainDiskDefPtr disk,
virDomainSnapshotDiskDefPtr snapdisk, virDomainSnapshotDiskDefPtr snapdisk,
qemuSnapshotDiskDataPtr dd, qemuSnapshotDiskDataPtr dd,
virHashTablePtr blockNamedNodeData, virHashTablePtr blockNamedNodeData,
bool reuse, bool reuse,
bool blockdev,
qemuDomainAsyncJob asyncJob, qemuDomainAsyncJob asyncJob,
virJSONValuePtr actions) virJSONValuePtr actions)
{ {
qemuDomainObjPrivatePtr priv = vm->privateData;
virQEMUDriverPtr driver = priv->driver;
bool blockdev = virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_BLOCKDEV);
virDomainDiskDefPtr persistdisk; virDomainDiskDefPtr persistdisk;
bool supportsCreate; bool supportsCreate;
bool updateRelativeBacking = false; bool updateRelativeBacking = false;
@ -1045,12 +1047,10 @@ qemuSnapshotDiskPrepareOne(virQEMUDriverPtr driver,
* that are selected for the snapshot. * that are selected for the snapshot.
*/ */
static int static int
qemuSnapshotDiskPrepare(virQEMUDriverPtr driver, qemuSnapshotDiskPrepare(virDomainObjPtr vm,
virDomainObjPtr vm,
virDomainMomentObjPtr snap, virDomainMomentObjPtr snap,
virQEMUDriverConfigPtr cfg, virQEMUDriverConfigPtr cfg,
bool reuse, bool reuse,
bool blockdev,
virHashTablePtr blockNamedNodeData, virHashTablePtr blockNamedNodeData,
qemuDomainAsyncJob asyncJob, qemuDomainAsyncJob asyncJob,
qemuSnapshotDiskDataPtr *rdata, qemuSnapshotDiskDataPtr *rdata,
@ -1070,11 +1070,11 @@ qemuSnapshotDiskPrepare(virQEMUDriverPtr driver,
if (snapdef->disks[i].snapshot == VIR_DOMAIN_SNAPSHOT_LOCATION_NONE) if (snapdef->disks[i].snapshot == VIR_DOMAIN_SNAPSHOT_LOCATION_NONE)
continue; continue;
if (qemuSnapshotDiskPrepareOne(driver, vm, cfg, vm->def->disks[i], if (qemuSnapshotDiskPrepareOne(vm, cfg, vm->def->disks[i],
snapdef->disks + i, snapdef->disks + i,
data + ndata++, data + ndata++,
blockNamedNodeData, blockNamedNodeData,
reuse, blockdev, reuse,
asyncJob, asyncJob,
actions) < 0) actions) < 0)
goto cleanup; goto cleanup;
@ -1085,7 +1085,7 @@ qemuSnapshotDiskPrepare(virQEMUDriverPtr driver,
ret = 0; ret = 0;
cleanup: cleanup:
qemuSnapshotDiskCleanup(data, ndata, driver, vm, asyncJob); qemuSnapshotDiskCleanup(data, ndata, vm, asyncJob);
return ret; return ret;
} }
@ -1166,7 +1166,6 @@ qemuSnapshotCreateActiveExternalDisks(virQEMUDriverPtr driver,
bool reuse = (flags & VIR_DOMAIN_SNAPSHOT_CREATE_REUSE_EXT) != 0; bool reuse = (flags & VIR_DOMAIN_SNAPSHOT_CREATE_REUSE_EXT) != 0;
qemuSnapshotDiskDataPtr diskdata = NULL; qemuSnapshotDiskDataPtr diskdata = NULL;
size_t ndiskdata = 0; size_t ndiskdata = 0;
bool blockdev = virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_BLOCKDEV);
if (virDomainObjCheckActive(vm) < 0) if (virDomainObjCheckActive(vm) < 0)
return -1; return -1;
@ -1175,7 +1174,7 @@ qemuSnapshotCreateActiveExternalDisks(virQEMUDriverPtr driver,
/* prepare a list of objects to use in the vm definition so that we don't /* prepare a list of objects to use in the vm definition so that we don't
* have to roll back later */ * have to roll back later */
if (qemuSnapshotDiskPrepare(driver, vm, snap, cfg, reuse, blockdev, if (qemuSnapshotDiskPrepare(vm, snap, cfg, reuse,
blockNamedNodeData, asyncJob, blockNamedNodeData, asyncJob,
&diskdata, &ndiskdata, actions) < 0) &diskdata, &ndiskdata, actions) < 0)
goto cleanup; goto cleanup;
@ -1214,7 +1213,7 @@ qemuSnapshotCreateActiveExternalDisks(virQEMUDriverPtr driver,
ret = 0; ret = 0;
cleanup: cleanup:
qemuSnapshotDiskCleanup(diskdata, ndiskdata, driver, vm, asyncJob); qemuSnapshotDiskCleanup(diskdata, ndiskdata, vm, asyncJob);
return ret; return ret;
} }