[pve-devel] [PATCH] qemu migrate : only wait for spice server online + eval

Alexandre Derumier aderumier at odiso.com
Wed Sep 18 07:45:39 CEST 2013


Currently offline migration fail ,because we are trying to check with qmp the spiceserver status.
This should be done online only.

I also add eval, to avoid migration lock if qmp query fail.

Fix :http://forum.proxmox.com/threads/16093-VM-is-locked-after-offline-migration?p=82852

Signed-off-by: Alexandre Derumier <aderumier at odiso.com>
---
 PVE/QemuMigrate.pm |   25 ++++++++++++++-----------
 1 file changed, 14 insertions(+), 11 deletions(-)

diff --git a/PVE/QemuMigrate.pm b/PVE/QemuMigrate.pm
index d88180b..634c305 100644
--- a/PVE/QemuMigrate.pm
+++ b/PVE/QemuMigrate.pm
@@ -590,17 +590,20 @@ sub phase3_cleanup {
 	}
     }
 
-    my $timer = 0;
-    if (PVE::QemuServer::vga_conf_has_spice($conf->{vga})) {
-        $self->log('info', "Waiting for spice server migration");
-	while (1) {
-	    my $res = PVE::QemuServer::vm_mon_cmd_nocheck($vmid, 'query-spice');
-	    last if int($res->{'migrated'}) == 1;
-	    last if $timer > 50;
-	    $timer ++;
-	    usleep(200000);
-        }
-    }
+    eval {
+
+	my $timer = 0;
+	if (PVE::QemuServer::vga_conf_has_spice($conf->{vga}) && $self->{running}) {
+	    $self->log('info', "Waiting for spice server migration");
+	    while (1) {
+		my $res = PVE::QemuServer::vm_mon_cmd_nocheck($vmid, 'query-spice');
+		last if int($res->{'migrated'}) == 1;
+		last if $timer > 50;
+		$timer ++;
+		usleep(200000);
+ 	    }
+	}
+    };
 
     # always stop local VM
     eval { PVE::QemuServer::vm_stop($self->{storecfg}, $vmid, 1, 1); };
-- 
1.7.10.4



More information about the pve-devel mailing list