From fc3601a308922332be6213032dfe43fd963e3f46 Mon Sep 17 00:00:00 2001 From: Jiri Denemark Date: Mon, 4 May 2015 22:21:23 +0200 Subject: [PATCH] qemu: Properly rename persistent def after migration When migrating a domain while changing its name and using VIR_MIGRATE_PERSIST_DEST flag, libvirt would fail to properly change the name in the persistent definition. The inconsistency results in weird behavior when dumping domain XML, destroying the domain, restarting libvirtd and likely in several other situations. Since the new name is already stored in vm->def->name, we just need to make sure the persistent definition uses this new name too. https://bugzilla.redhat.com/show_bug.cgi?id=1076354 Signed-off-by: Jiri Denemark --- src/qemu/qemu_migration.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 20c21938ca..c1af704b8c 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -1392,6 +1392,14 @@ qemuMigrationEatCookie(virQEMUDriverPtr driver, flags) < 0) goto error; + if (flags & QEMU_MIGRATION_COOKIE_PERSISTENT && + mig->persistent && + STRNEQ(dom->def->name, mig->persistent->name)) { + VIR_FREE(mig->persistent->name); + if (VIR_STRDUP(mig->persistent->name, dom->def->name) < 0) + goto error; + } + if (mig->flags & QEMU_MIGRATION_COOKIE_LOCKSTATE) { if (!mig->lockDriver) { if (virLockManagerPluginUsesState(driver->lockManager)) {