}
+/**
+ * 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,
qemuDomainObjEnterMonitor(driver, vm);
rc = qemuMonitorTransaction(qemuDomainGetMonitor(vm), &actions);
if (qemuDomainObjExitMonitor(driver, vm) < 0 || rc < 0) {
- virDomainCheckpointObjListRemove(vm->checkpoints, chk);
+ qemuCheckpointRollbackMetadata(vm, chk);
return NULL;
}
virReportError(VIR_ERR_INTERNAL_ERROR,
_("unable to save metadata for checkpoint %s"),
chk->def->name);
- virDomainCheckpointObjListRemove(vm->checkpoints, chk);
+ qemuCheckpointRollbackMetadata(vm, chk);
return -1;
}
virQEMUDriverConfigPtr cfg,
virDomainMomentObjPtr chk,
bool update_current);
+
+void
+qemuCheckpointRollbackMetadata(virDomainObjPtr vm,
+ virDomainMomentObjPtr chk);