mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-22 20:45:18 +00:00
qemu: Transfer recomputed stats back to source
After the previous commit, migration statistics on the source and destination hosts are not equal because the destination updated time statistics. Let's send the result back so that the same data can be queried on both sides of the migration. Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
This commit is contained in:
parent
eaee338ae6
commit
a1c0180d0e
@ -3019,9 +3019,27 @@ qemuMigrationConfirmPhase(virQEMUDriverPtr driver,
|
||||
? QEMU_MIGRATION_PHASE_CONFIRM3
|
||||
: QEMU_MIGRATION_PHASE_CONFIRM3_CANCELLED);
|
||||
|
||||
if (!(mig = qemuMigrationEatCookie(driver, vm, cookiein, cookieinlen, 0)))
|
||||
if (!(mig = qemuMigrationEatCookie(driver, vm, cookiein, cookieinlen,
|
||||
QEMU_MIGRATION_COOKIE_STATS)))
|
||||
goto cleanup;
|
||||
|
||||
/* Update total times with the values sent by the destination daemon */
|
||||
if (mig->jobInfo) {
|
||||
qemuDomainObjPrivatePtr priv = vm->privateData;
|
||||
if (priv->job.completed) {
|
||||
qemuDomainJobInfoPtr jobInfo = priv->job.completed;
|
||||
if (mig->jobInfo->status.downtime_set) {
|
||||
jobInfo->status.downtime = mig->jobInfo->status.downtime;
|
||||
jobInfo->status.downtime_set = true;
|
||||
}
|
||||
if (mig->jobInfo->timeElapsed)
|
||||
jobInfo->timeElapsed = mig->jobInfo->timeElapsed;
|
||||
} else {
|
||||
priv->job.completed = mig->jobInfo;
|
||||
mig->jobInfo = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
if (flags & VIR_MIGRATE_OFFLINE)
|
||||
goto done;
|
||||
|
||||
@ -4860,7 +4878,8 @@ qemuMigrationFinish(virQEMUDriverPtr driver,
|
||||
VIR_DOMAIN_EVENT_STOPPED_FAILED);
|
||||
}
|
||||
|
||||
if (qemuMigrationBakeCookie(mig, driver, vm, cookieout, cookieoutlen, 0) < 0)
|
||||
if (qemuMigrationBakeCookie(mig, driver, vm, cookieout, cookieoutlen,
|
||||
QEMU_MIGRATION_COOKIE_STATS) < 0)
|
||||
VIR_WARN("Unable to encode migration cookie");
|
||||
|
||||
endjob:
|
||||
|
Loading…
x
Reference in New Issue
Block a user