[PATCH 17/19] qemu: migration: Clean up temporary bitmaps when cancelling a migration
Jiri Denemark
jdenemar at redhat.com
Thu Feb 18 11:13:01 UTC 2021
On Thu, Feb 11, 2021 at 16:37:56 +0100, Peter Krempa wrote:
> In case when the block migration job required temporary bitmaps for
> merging the appropriate checkpoints we need to clean them up when
> cancelling the job. On success we don't need to do that though as the
> bitmaps are just temporary thus are not written to disk.
>
> Signed-off-by: Peter Krempa <pkrempa at redhat.com>
> ---
> src/qemu/qemu_migration.c | 31 +++++++++++++++++++++++++++++++
> 1 file changed, 31 insertions(+)
>
> diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c
> index 37f0d43d24..36424f8493 100644
> --- a/src/qemu/qemu_migration.c
> +++ b/src/qemu/qemu_migration.c
> @@ -834,6 +834,32 @@ qemuMigrationSrcNBDCopyCancel(virQEMUDriverPtr driver,
> }
>
>
> +static int
> +qemuMigrationSrcCancelRemoveTempBitmaps(virDomainObjPtr vm,
> + qemuDomainAsyncJob asyncJob)
> +{
> + qemuDomainObjPrivatePtr priv = vm->privateData;
> + virQEMUDriverPtr driver = priv->driver;
> + qemuDomainJobPrivatePtr jobPriv = priv->job.privateData;
> + GSList *next;
> +
> + if (!jobPriv->migTempBitmaps)
> + return 0;
This check is pretty much redundant as the loop will do exactly the
same.
> +
> + for (next = jobPriv->migTempBitmaps; next; next = next->next) {
> + qemuDomainJobPrivateMigrateTempBitmapPtr t = next->data;
> +
> + if (qemuDomainObjEnterMonitorAsync(driver, vm, asyncJob) < 0)
> + return -1;
> + qemuMonitorBitmapRemove(priv->mon, t->nodename, t->bitmapname);
> + if (qemuDomainObjExitMonitor(driver, vm) < 0)
> + return -1;
> + }
> +
> + return 0;
> +}
> +
> +
> static virStorageSourcePtr
> qemuMigrationSrcNBDStorageCopyBlockdevPrepareSource(virDomainDiskDefPtr disk,
> const char *host,
...
Reviewed-by: Jiri Denemark <jdenemar at redhat.com>
More information about the libvir-list
mailing list