From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [IPv6:2a01:7e0:0:424::9]) by lore.proxmox.com (Postfix) with ESMTPS id A8EA81FF39F for ; Mon, 10 Jun 2024 11:03:47 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id A80DF12883; Mon, 10 Jun 2024 11:04:21 +0200 (CEST) From: Fiona Ebner To: pve-devel@lists.proxmox.com Date: Mon, 10 Jun 2024 11:04:15 +0200 Message-Id: <20240610090415.13057-1-f.ebner@proxmox.com> X-Mailer: git-send-email 2.39.2 MIME-Version: 1.0 X-SPAM-LEVEL: Spam detection results: 0 AWL -0.309 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment KAM_NUMSUBJECT 0.5 Subject ends in numbers excluding current years SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record T_SCC_BODY_TEXT_LINE -0.01 - Subject: [pve-devel] [PATCH storage] volume import: assume target API version is at least 9 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: , Reply-To: Proxmox VE development discussion Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: pve-devel-bounces@lists.proxmox.com Sender: "pve-devel" The storage API version has been bumped to at least 9 since libpve-storage = 7.0-4. If the source node is on Proxmox VE 8, where this change will come in, then the target node can be assumed to be running either Proxmox VE 8 or, during upgrade, the latest version of Proxmox VE 7.4, so it's safe to assume a storage API version of at least 9 in all cases. As reported by Maximiliano, the fact that the 'apiinfo' call was guarded with a quiet eval could lead to strange errors for replication on a customer system where an SSH connection could not always be established, because the target's API version would fall back to 1. Because of that, the '-base' argument would be missing for the import call on the target which would in turn lead to an error about the target ZFS volume already existing (rather than doing an incremental sync). Reported-by: Maximiliano Sandoval Signed-off-by: Fiona Ebner --- src/PVE/Storage.pm | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/src/PVE/Storage.pm b/src/PVE/Storage.pm index f19a115..bee2361 100755 --- a/src/PVE/Storage.pm +++ b/src/PVE/Storage.pm @@ -709,7 +709,7 @@ sub storage_migrate_snapshot { } my $volume_import_prepare = sub { - my ($volid, $format, $path, $apiver, $opts) = @_; + my ($volid, $format, $path, $opts) = @_; my $base_snapshot = $opts->{base_snapshot}; my $snapshot = $opts->{snapshot}; @@ -724,11 +724,11 @@ my $volume_import_prepare = sub { if ($migration_snapshot) { push @$recv, '-delete-snapshot', $snapshot; } - push @$recv, '-allow-rename', $allow_rename if $apiver >= 5; + push @$recv, '-allow-rename', $allow_rename; if (defined($base_snapshot)) { # Check if the snapshot exists on the remote side: - push @$recv, '-base', $base_snapshot if $apiver >= 9; + push @$recv, '-base', $base_snapshot; } return $recv; @@ -814,12 +814,7 @@ sub storage_migrate { $import_fn = "tcp://$net"; } - my $target_apiver = 1; # if there is no apiinfo call, assume 1 - my $get_api_version = [@$ssh, 'pvesm', 'apiinfo']; - my $match_api_version = sub { $target_apiver = $1 if $_[0] =~ m!^APIVER (\d+)$!; }; - eval { run_command($get_api_version, logfunc => $match_api_version); }; - - my $recv = [ @$ssh, '--', $volume_import_prepare->($target_volid, $format, $import_fn, $target_apiver, $opts)->@* ]; + my $recv = [ @$ssh, '--', $volume_import_prepare->($target_volid, $format, $import_fn, $opts)->@* ]; my $new_volid; my $pattern = volume_imported_message(undef, 1); @@ -911,8 +906,7 @@ sub storage_migrate { run_command($cmds, logfunc => $match_volid_and_log); } - die "unable to get ID of the migrated volume\n" - if !defined($new_volid) && $target_apiver >= 5; + die "unable to get ID of the migrated volume\n" if !defined($new_volid); }; my $err = $@; if ($opts->{migration_snapshot}) { @@ -1961,7 +1955,7 @@ sub volume_import_start { my $info = IO::File->new(); my $unix = $opts->{unix} // "/run/pve/storage-migrate-$vmid.$$.unix"; - my $import = $volume_import_prepare->($volid, $format, "unix://$unix", APIVER, $opts); + my $import = $volume_import_prepare->($volid, $format, "unix://$unix", $opts); unlink $unix; my $cpid = open3($input, $info, $info, @$import) -- 2.39.2 _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel