On Tue, May 10, 2022 at 17:20:46 +0200, Jiri Denemark wrote:
Code executed only when dom != NULL can be moved before
"endjob" label,
to the only place where dom is set.
Signed-off-by: Jiri Denemark <jdenemar(a)redhat.com>
---
src/qemu/qemu_migration.c | 50 ++++++++++++++++++++++-----------------
1 file changed, 28 insertions(+), 22 deletions(-)
diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c
index 1f6f008ad9..cb17cbd189 100644
--- a/src/qemu/qemu_migration.c
+++ b/src/qemu/qemu_migration.c
@@ -5844,8 +5844,16 @@ qemuMigrationDstFinish(virQEMUDriver *driver,
if (flags & VIR_MIGRATE_OFFLINE) {
if (retcode == 0 &&
- qemuMigrationDstPersist(driver, vm, mig, false) == 0)
+ qemuMigrationDstPersist(driver, vm, mig, false) == 0) {
dom = virGetDomain(dconn, vm->def->name, vm->def->uuid, -1);
IMO virGetDomain should be treated as that it can't fail ...
+
+ if (dom &&
... so this check seems pointless.
+ qemuMigrationCookieFormat(mig, driver, vm,
+ QEMU_MIGRATION_DESTINATION,
+ cookieout, cookieoutlen,
+ QEMU_MIGRATION_COOKIE_STATS) < 0)
broken alignment
+ VIR_WARN("Unable to encode migration
cookie");
+ }
goto endjob;
}
@@ -6008,6 +6016,25 @@ qemuMigrationDstFinish(virQEMUDriver *driver,
/* Guest is successfully running, so cancel previous auto destroy */
qemuProcessAutoDestroyRemove(driver, vm);
+ if (jobData) {
+ priv->job.completed = g_steal_pointer(&jobData);
+ priv->job.completed->status = VIR_DOMAIN_JOB_STATUS_COMPLETED;
+ qemuDomainJobSetStatsType(priv->job.completed,
+ QEMU_DOMAIN_JOB_STATS_TYPE_MIGRATION);
+ }
+
+ if (qemuMigrationCookieFormat(mig, driver, vm,
+ QEMU_MIGRATION_DESTINATION,
+ cookieout, cookieoutlen,
+ QEMU_MIGRATION_COOKIE_STATS) < 0)
+ VIR_WARN("Unable to encode migration cookie");
E.g. here you don't check 'dom' because it's not yet allocated.
+
+ /* Remove completed stats for post-copy, everything but timing fields
+ * is obsolete anyway.
+ */
+ if (inPostCopy)
+ g_clear_pointer(&priv->job.completed, virDomainJobDataFree);
+
dom = virGetDomain(dconn, vm->def->name, vm->def->uuid,
vm->def->id);
endjob:
Reviewed-by: Peter Krempa <pkrempa(a)redhat.com>