mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-23 21:34:54 +03:00
qemu: backup: Extract calculations of bitmaps to merge for incremental backup
Separate the for now incomplete code that collects the bitmaps to be merged for an incremental backup into a separate function. This will allow adding testing prior to the improvement of the algorithm to include snapshots. Signed-off-by: Peter Krempa <pkrempa@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com>
This commit is contained in:
parent
d0e829e232
commit
3323e85bf6
@ -170,6 +170,30 @@ qemuBackupDiskDataCleanup(virDomainObjPtr vm,
|
||||
}
|
||||
|
||||
|
||||
static virJSONValuePtr
|
||||
qemuBackupDiskPrepareOneBitmapsChain(virDomainMomentDefPtr *incremental,
|
||||
virStorageSourcePtr backingChain)
|
||||
{
|
||||
g_autoptr(virJSONValue) ret = NULL;
|
||||
|
||||
if (!(ret = virJSONValueNewArray()))
|
||||
return NULL;
|
||||
|
||||
/* TODO: this code works only if the bitmaps are present on a single node.
|
||||
* The algorithm needs to be changed so that it looks into the backing chain
|
||||
* so that we can combine all relevant bitmaps for a given backing chain */
|
||||
while (*incremental) {
|
||||
if (qemuMonitorTransactionBitmapMergeSourceAddBitmap(ret,
|
||||
backingChain->nodeformat,
|
||||
(*incremental)->name) < 0)
|
||||
return NULL;
|
||||
|
||||
incremental++;
|
||||
}
|
||||
|
||||
return g_steal_pointer(&ret);
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
qemuBackupDiskPrepareOneBitmaps(struct qemuBackupDiskData *dd,
|
||||
@ -179,21 +203,10 @@ qemuBackupDiskPrepareOneBitmaps(struct qemuBackupDiskData *dd,
|
||||
g_autoptr(virJSONValue) mergebitmaps = NULL;
|
||||
g_autoptr(virJSONValue) mergebitmapsstore = NULL;
|
||||
|
||||
if (!(mergebitmaps = virJSONValueNewArray()))
|
||||
if (!(mergebitmaps = qemuBackupDiskPrepareOneBitmapsChain(incremental,
|
||||
dd->domdisk->src)))
|
||||
return -1;
|
||||
|
||||
/* TODO: this code works only if the bitmaps are present on a single node.
|
||||
* The algorithm needs to be changed so that it looks into the backing chain
|
||||
* so that we can combine all relevant bitmaps for a given backing chain */
|
||||
while (*incremental) {
|
||||
if (qemuMonitorTransactionBitmapMergeSourceAddBitmap(mergebitmaps,
|
||||
dd->domdisk->src->nodeformat,
|
||||
(*incremental)->name) < 0)
|
||||
return -1;
|
||||
|
||||
incremental++;
|
||||
}
|
||||
|
||||
if (!(mergebitmapsstore = virJSONValueCopy(mergebitmaps)))
|
||||
return -1;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user