提交 5d01e866 编写于 作者: J Jiri Denemark

qemu: Properly update completed migration stats

We should not overwrite all migration statistics on the source with the
numbers sent by the destination since the source may have an updated
view in some cases (such as post-copy migration). It's safer to update
just the timing info we need to get from the destination and be prepared
for the future. And we should only do all this after a successful
migration.
Signed-off-by: NJiri Denemark <jdenemar@redhat.com>
上级 e031560e
......@@ -3869,6 +3869,8 @@ qemuMigrationConfirmPhase(virQEMUDriverPtr driver,
virObjectEventPtr event = NULL;
int rv = -1;
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
qemuDomainObjPrivatePtr priv = vm->privateData;
qemuDomainJobInfoPtr jobInfo = NULL;
VIR_DEBUG("driver=%p, conn=%p, vm=%p, cookiein=%s, cookieinlen=%d, "
"flags=%x, retcode=%d",
......@@ -3886,12 +3888,18 @@ qemuMigrationConfirmPhase(virQEMUDriverPtr driver,
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 (retcode == 0)
jobInfo = priv->job.completed;
else
VIR_FREE(priv->job.completed);
priv->job.completed = mig->jobInfo;
mig->jobInfo = NULL;
/* Update times with the values sent by the destination daemon */
if (mig->jobInfo && jobInfo) {
qemuDomainJobInfoUpdateTime(jobInfo);
jobInfo->timeDeltaSet = mig->jobInfo->timeDeltaSet;
jobInfo->timeDelta = mig->jobInfo->timeDelta;
jobInfo->stats.downtime_set = mig->jobInfo->stats.downtime_set;
jobInfo->stats.downtime = mig->jobInfo->stats.downtime;
}
if (flags & VIR_MIGRATE_OFFLINE)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册