Mark McLoughlin aa0373
From f2eb2ad5163d5bae2392a8bfc6040c45426c9f5f Mon Sep 17 00:00:00 2001
Mark McLoughlin aa0373
From: Chris Lalancette <clalance@redhat.com>
Mark McLoughlin aa0373
Date: Wed, 5 Aug 2009 13:42:07 +0200
Mark McLoughlin aa0373
Subject: [PATCH] Run 'cont' on successful migration finish.
Mark McLoughlin aa0373
Mark McLoughlin aa0373
https://bugzilla.redhat.com/516187
Mark McLoughlin aa0373
Mark McLoughlin aa0373
As of qemu 0.10.6, qemu now honors the -S flag on incoming migration.
Mark McLoughlin aa0373
That means that when the migration completes, we have to issue a
Mark McLoughlin aa0373
'cont' command to get the VM running again.  We do it unconditionally
Mark McLoughlin aa0373
since it won't hurt on older qemu.
Mark McLoughlin aa0373
Mark McLoughlin aa0373
(cherry picked from commit d1ec4d7a5a4f50c9492137eaab4f021caa075f95)
Mark McLoughlin aa0373
Mark McLoughlin aa0373
Fedora-patch: libvirt-fix-migration-completion-with-newer-qemu.patch
Mark McLoughlin aa0373
---
Mark McLoughlin aa0373
 src/qemu_driver.c |   11 +++++++++++
Mark McLoughlin aa0373
 1 files changed, 11 insertions(+), 0 deletions(-)
Mark McLoughlin aa0373
Mark McLoughlin aa0373
diff --git a/src/qemu_driver.c b/src/qemu_driver.c
Mark McLoughlin aa0373
index 99dac52..bf9a0b2 100644
Mark McLoughlin aa0373
--- a/src/qemu_driver.c
Mark McLoughlin aa0373
+++ b/src/qemu_driver.c
Mark McLoughlin aa0373
@@ -6951,7 +6951,18 @@ qemudDomainMigrateFinish2 (virConnectPtr dconn,
Mark McLoughlin aa0373
      */
Mark McLoughlin aa0373
     if (retcode == 0) {
Mark McLoughlin aa0373
         dom = virGetDomain (dconn, vm->def->name, vm->def->uuid);
Mark McLoughlin aa0373
+
Mark McLoughlin aa0373
+        /* run 'cont' on the destination, which allows migration on qemu
Mark McLoughlin aa0373
+         * >= 0.10.6 to work properly.  This isn't strictly necessary on
Mark McLoughlin aa0373
+         * older qemu's, but it also doesn't hurt anything there
Mark McLoughlin aa0373
+         */
Mark McLoughlin aa0373
+        if (qemudMonitorCommand(vm, "cont", &info) < 0) {
Mark McLoughlin aa0373
+            qemudReportError(dconn, NULL, NULL, VIR_ERR_INTERNAL_ERROR,
Mark McLoughlin aa0373
+                             "%s", _("resume operation failed"));
Mark McLoughlin aa0373
+            goto cleanup;
Mark McLoughlin aa0373
+        }
Mark McLoughlin aa0373
         VIR_FREE(info);
Mark McLoughlin aa0373
+
Mark McLoughlin aa0373
         vm->state = VIR_DOMAIN_RUNNING;
Mark McLoughlin aa0373
         event = virDomainEventNewFromObj(vm,
Mark McLoughlin aa0373
                                          VIR_DOMAIN_EVENT_RESUMED,
Mark McLoughlin aa0373
-- 
Mark McLoughlin aa0373
1.6.2.5
Mark McLoughlin aa0373