From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by lists.proxmox.com (Postfix) with ESMTPS id 7CE9795771 for ; Wed, 18 Jan 2023 14:52:46 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 3C2DC20B0B for ; Wed, 18 Jan 2023 14:52:46 +0100 (CET) Received: from proxmox-new.maurer-it.com (proxmox-new.maurer-it.com [94.136.29.106]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by firstgate.proxmox.com (Proxmox) with ESMTPS for ; Wed, 18 Jan 2023 14:52:44 +0100 (CET) Received: from proxmox-new.maurer-it.com (localhost.localdomain [127.0.0.1]) by proxmox-new.maurer-it.com (Proxmox) with ESMTP id 6BAE044336 for ; Wed, 18 Jan 2023 14:52:44 +0100 (CET) From: Fiona Ebner To: pve-devel@lists.proxmox.com Date: Wed, 18 Jan 2023 14:52:40 +0100 Message-Id: <20230118135240.318550-1-f.ebner@proxmox.com> X-Mailer: git-send-email 2.30.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 0 AWL 0.022 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: [pve-devel] [PATCH qemu-server] close #2792: allow online migration with replicated snapshots X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 18 Jan 2023 13:52:46 -0000 Since commit 9b6efe43 ("migrate: add live-migration of replicated disks") live-migration with replicated volumes is possible. When handling the replication, it is checked that all local volumes previously detected as replicatable are actually replicated. So the check if migration with snapshots is possible can just allow volumes that are detected as replicatable. Note that VM state files are also replicated. If there is an invalid configuration with a non-replicatable volume or state file and replication is enabled, then replication will fail, and thus migration will fail early. Trying to live-migrate to a non-replication target (needs --force) will still fail if there are snapshots, because they are (correctly) detected as non-replicated. Signed-off-by: Fiona Ebner --- This seems too easy. What did I miss ;)? PVE/QemuMigrate.pm | 4 +++- test/run_qemu_migrate_tests.pl | 9 ++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/PVE/QemuMigrate.pm b/PVE/QemuMigrate.pm index 5e466d95..0c12f77d 100644 --- a/PVE/QemuMigrate.pm +++ b/PVE/QemuMigrate.pm @@ -433,7 +433,9 @@ sub scan_local_volumes { # we cannot migrate shapshots on local storage # exceptions: 'zfspool' or 'qcow2' files (on directory storage) - die "online storage migration not possible if snapshot exists\n" if $self->{running}; + die "online storage migration not possible if non-replicated snapshot exists\n" + if $self->{running} && !$local_volumes->{$volid}->{replicated}; + die "remote migration with snapshots not supported yet\n" if $self->{opts}->{remote}; if (!($scfg->{type} eq 'zfspool' diff --git a/test/run_qemu_migrate_tests.pl b/test/run_qemu_migrate_tests.pl index 0dffaa43..3a3049d7 100755 --- a/test/run_qemu_migrate_tests.pl +++ b/test/run_qemu_migrate_tests.pl @@ -678,7 +678,7 @@ my $tests = [ 'with-local-disks' => 1, }, expected_calls => {}, - expect_die => 'online storage migration not possible if snapshot exists', + expect_die => 'online storage migration not possible if non-replicated snapshot exists', expected => { source_volids => local_volids_for_vm(4567), target_volids => {}, @@ -1237,8 +1237,11 @@ my $tests = [ 'with-local-disks' => 1, }, target_volids => local_volids_for_vm(105), - expected_calls => {}, - expect_die => "online storage migration not possible if snapshot exists", + expected_calls => { + %{$replicated_expected_calls_online}, + 'block-dirty-bitmap-add-drive-scsi0' => 1, + 'block-dirty-bitmap-add-drive-ide0' => 1, + }, expected => { source_volids => local_volids_for_vm(105), target_volids => local_volids_for_vm(105), -- 2.30.2