From: Peter Krempa Date: Wed, 5 Jun 2019 13:29:37 +0000 (+0200) Subject: qemu: snapshot: Don't overload 'ret' in qemuDomainSnapshotCreateDiskActive X-Git-Tag: v5.5.0-rc1~313 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=46da762669bada3b297bea1217c96af9d4c514c7;p=thirdparty%2Flibvirt.git qemu: snapshot: Don't overload 'ret' in qemuDomainSnapshotCreateDiskActive Introduce 'rc' for collecting state from monitor commands so that we can initialize 'ret' to -1. This also fixes few cases which could return 0 from the function despite an error condition. Signed-off-by: Peter Krempa Reviewed-by: Ján Tomko --- diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 1e1cb8d4ca..c1f0ad0207 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -15239,7 +15239,8 @@ qemuDomainSnapshotCreateDiskActive(virQEMUDriverPtr driver, qemuDomainObjPrivatePtr priv = vm->privateData; VIR_AUTOPTR(virJSONValue) actions = NULL; bool do_transaction = false; - int ret = 0; + int rc; + int ret = -1; size_t i; bool reuse = (flags & VIR_DOMAIN_SNAPSHOT_CREATE_REUSE_EXT) != 0; qemuDomainSnapshotDiskDataPtr diskdata = NULL; @@ -15263,11 +15264,9 @@ qemuDomainSnapshotCreateDiskActive(virQEMUDriverPtr driver, * VIR_DOMAIN_SNAPSHOT_LOCATION_EXTERNAL with a valid file name and * qcow2 format. */ for (i = 0; i < ndiskdata; i++) { - ret = qemuDomainSnapshotCreateSingleDiskActive(driver, vm, - &diskdata[i], - actions, reuse); - - if (ret < 0) + if (qemuDomainSnapshotCreateSingleDiskActive(driver, vm, + &diskdata[i], + actions, reuse) < 0) goto error; do_transaction = true; @@ -15277,24 +15276,26 @@ qemuDomainSnapshotCreateDiskActive(virQEMUDriverPtr driver, if (qemuDomainObjEnterMonitorAsync(driver, vm, asyncJob) < 0) goto cleanup; - ret = qemuMonitorTransaction(priv->mon, &actions); + rc = qemuMonitorTransaction(priv->mon, &actions); if (qemuDomainObjExitMonitor(driver, vm) < 0) - ret = -1; + rc = -1; for (i = 0; i < ndiskdata; i++) { qemuDomainSnapshotDiskDataPtr dd = &diskdata[i]; - virDomainAuditDisk(vm, dd->disk->src, dd->src, "snapshot", ret >= 0); + virDomainAuditDisk(vm, dd->disk->src, dd->src, "snapshot", rc >= 0); - if (ret == 0) + if (rc == 0) qemuDomainSnapshotUpdateDiskSources(dd); } - if (ret < 0) + if (rc < 0) goto error; } + ret = 0; + error: if (ret < 0) { virErrorPreserveLast(&orig_err);