[pve-devel] [PATCH qemu-server] Fix live migration with replicated unused volumes

Fabian Ebner f.ebner at proxmox.com
Mon Apr 20 10:31:55 CEST 2020


by counting only local volumes that will be live-migrated via qemu_drive_mirror,
i.e. those listed in $self->{online_local_volumes}.

Signed-off-by: Fabian Ebner <f.ebner at proxmox.com>
---

Also (correctly) would not count vmstate volumes anymore,
but live migration with snapshots is currently not allowed anyways.

 PVE/QemuMigrate.pm | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/PVE/QemuMigrate.pm b/PVE/QemuMigrate.pm
index 97fd994..b596a92 100644
--- a/PVE/QemuMigrate.pm
+++ b/PVE/QemuMigrate.pm
@@ -708,8 +708,14 @@ sub phase2 {
     # TODO change to 'spice_ticket: <ticket>\n' in 7.0
     my $input = $spice_ticket ? "$spice_ticket\n" : "\n";
     $input .= "nbd_protocol_version: $nbd_protocol_version\n";
-    foreach my $volid (keys %{$self->{replicated_volumes}}) {
-	$input .= "replicated_volume: $volid\n";
+
+    my $number_of_online_replicated_volumes = 0;
+    if ($self->{online_local_volumes}) {
+	foreach my $volid (keys %{$self->{replicated_volumes}}) {
+	    next if !(grep { $volid eq $_ } @{$self->{online_local_volumes}});
+	    $number_of_online_replicated_volumes++;
+	    $input .= "replicated_volume: $volid\n";
+	}
     }
 
     my $target_replicated_volumes = {};
@@ -773,7 +779,7 @@ sub phase2 {
 
     die "unable to detect remote migration address\n" if !$raddr;
 
-    if (scalar(keys %$target_replicated_volumes) != scalar(keys %{$self->{replicated_volumes}})) {
+    if (scalar(keys %$target_replicated_volumes) != $number_of_online_replicated_volumes) {
 	die "number of replicated disks on source and target node do not match - target node too old?\n"
     }
 
-- 
2.20.1





More information about the pve-devel mailing list