[libvirt PATCH 37/80] qemu: Make final part of migration Confirm phase reusable
Peter Krempa
pkrempa at redhat.com
Wed May 11 15:10:21 UTC 2022
On Tue, May 10, 2022 at 17:20:58 +0200, Jiri Denemark wrote:
> By separating it into a dedicated qemuMigrationSrcComplete function
> which can be later called in other places.
>
> Signed-off-by: Jiri Denemark <jdenemar at redhat.com>
> ---
> src/qemu/qemu_migration.c | 70 ++++++++++++++++++++++++---------------
> src/qemu/qemu_migration.h | 5 +++
> 2 files changed, 48 insertions(+), 27 deletions(-)
>
> diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c
> index b62f7256c4..903c1dbf6b 100644
> --- a/src/qemu/qemu_migration.c
> +++ b/src/qemu/qemu_migration.c
> @@ -3518,6 +3518,48 @@ qemuMigrationAnyPrepareDef(virQEMUDriver *driver,
> }
>
>
> +void
> +qemuMigrationSrcComplete(virQEMUDriver *driver,
> + virDomainObj *vm,
> + virDomainAsyncJob asyncJob)
> +{
> + qemuDomainObjPrivate *priv = vm->privateData;
> + virDomainJobData *jobData = priv->job.completed;
> + virObjectEvent *event;
> + int reason;
> +
> + if (jobData) {
> + /* We need to refresh migration statistics after a completed post-copy
> + * migration since jobData contains obsolete data from the time we
> + * switched to post-copy mode.
> + */
> + if (virDomainObjGetState(vm, &reason) == VIR_DOMAIN_PAUSED &&
> + reason == VIR_DOMAIN_PAUSED_POSTCOPY) {
> + VIR_DEBUG("Refreshing migration statistics");
> + if (qemuMigrationAnyFetchStats(driver, vm, VIR_ASYNC_JOB_MIGRATION_OUT,
> + jobData, NULL) < 0)
> + VIR_WARN("Could not refresh migration statistics");
> + }
> +
> + qemuDomainJobDataUpdateTime(jobData);
> + }
> +
> + /* If guest uses SPICE and supports seamless migration we have to hold
> + * up domain shutdown until SPICE server transfers its data */
> + qemuMigrationSrcWaitForSpice(vm);
> +
> + qemuProcessStop(driver, vm, VIR_DOMAIN_SHUTOFF_MIGRATED, asyncJob,
> + VIR_QEMU_PROCESS_STOP_MIGRATED);
> + virDomainAuditStop(vm, "migrated");
> +
> + event = virDomainEventLifecycleNewFromObj(vm,
> + VIR_DOMAIN_EVENT_STOPPED,
> + VIR_DOMAIN_EVENT_STOPPED_MIGRATED);
Fix the alignment here.
Reviewed-by: Peter Krempa <pkrempa at redhat.com>
More information about the libvir-list
mailing list