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:
Jiri Denemark 2014-08-28 16:39:58 +02:00
parent eaee338ae6
commit a1c0180d0e

View File

@ -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: