From: Peter Krempa Date: Mon, 6 Jan 2020 14:03:56 +0000 (+0100) Subject: qemu: checkpoint: Extract and export rollback of checkpoint metadata storing X-Git-Tag: v6.0.0-rc1~62 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=54dd75ec8dbd59bfc50d8285cd785f0aa73f0acd;p=thirdparty%2Flibvirt.git qemu: checkpoint: Extract and export rollback of checkpoint metadata storing If we are certain that the checkpoint creation failed we remove the metadata from the list. To allow reusing this in the backup code add a new helper and export it. Signed-off-by: Peter Krempa Reviewed-by: Daniel P. Berrangé --- diff --git a/src/qemu/qemu_checkpoint.c b/src/qemu/qemu_checkpoint.c index 97bc97bb8e..2fa5c1ae00 100644 --- a/src/qemu/qemu_checkpoint.c +++ b/src/qemu/qemu_checkpoint.c @@ -400,6 +400,24 @@ qemuCheckpointCreateCommon(virQEMUDriverPtr driver, } +/** + * qemuCheckpointRollbackMetadata: + * @vm: domain object + * @chk: checkpoint object + * + * If @chk is not null remove the @chk object from the list of checkpoints of @vm. + */ +void +qemuCheckpointRollbackMetadata(virDomainObjPtr vm, + virDomainMomentObjPtr chk) +{ + if (!chk) + return; + + virDomainCheckpointObjListRemove(vm->checkpoints, chk); +} + + static virDomainMomentObjPtr qemuCheckpointCreate(virQEMUDriverPtr driver, virDomainObjPtr vm, @@ -415,7 +433,7 @@ qemuCheckpointCreate(virQEMUDriverPtr driver, qemuDomainObjEnterMonitor(driver, vm); rc = qemuMonitorTransaction(qemuDomainGetMonitor(vm), &actions); if (qemuDomainObjExitMonitor(driver, vm) < 0 || rc < 0) { - virDomainCheckpointObjListRemove(vm->checkpoints, chk); + qemuCheckpointRollbackMetadata(vm, chk); return NULL; } @@ -441,7 +459,7 @@ qemuCheckpointCreateFinalize(virQEMUDriverPtr driver, virReportError(VIR_ERR_INTERNAL_ERROR, _("unable to save metadata for checkpoint %s"), chk->def->name); - virDomainCheckpointObjListRemove(vm->checkpoints, chk); + qemuCheckpointRollbackMetadata(vm, chk); return -1; } diff --git a/src/qemu/qemu_checkpoint.h b/src/qemu/qemu_checkpoint.h index 00548beec9..eb85611ea6 100644 --- a/src/qemu/qemu_checkpoint.h +++ b/src/qemu/qemu_checkpoint.h @@ -67,3 +67,7 @@ qemuCheckpointCreateFinalize(virQEMUDriverPtr driver, virQEMUDriverConfigPtr cfg, virDomainMomentObjPtr chk, bool update_current); + +void +qemuCheckpointRollbackMetadata(virDomainObjPtr vm, + virDomainMomentObjPtr chk);