mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-07 17:28:15 +00:00
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 <pkrempa@redhat.com> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
This commit is contained in:
parent
0809e40b5f
commit
54dd75ec8d
@ -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;
|
||||
}
|
||||
|
||||
|
@ -67,3 +67,7 @@ qemuCheckpointCreateFinalize(virQEMUDriverPtr driver,
|
||||
virQEMUDriverConfigPtr cfg,
|
||||
virDomainMomentObjPtr chk,
|
||||
bool update_current);
|
||||
|
||||
void
|
||||
qemuCheckpointRollbackMetadata(virDomainObjPtr vm,
|
||||
virDomainMomentObjPtr chk);
|
||||
|
Loading…
x
Reference in New Issue
Block a user