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 E8D2AB151 for ; Wed, 23 Nov 2022 12:40:30 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id C9FF821D83 for ; Wed, 23 Nov 2022 12:40:30 +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, 23 Nov 2022 12:40:29 +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 430D744777 for ; Wed, 23 Nov 2022 12:40:29 +0100 (CET) From: Fiona Ebner To: pve-devel@lists.proxmox.com Date: Wed, 23 Nov 2022 12:40:25 +0100 Message-Id: <20221123114025.164565-2-f.ebner@proxmox.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20221123114025.164565-1-f.ebner@proxmox.com> References: <20221123114025.164565-1-f.ebner@proxmox.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 0 AWL 0.027 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 storage 2/2] get bandwidth limit: improve detecting if storages are involved 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, 23 Nov 2022 11:40:31 -0000 Previously, calling with e.g. $storage_list = [undef] would lead to an early return of $override and not consider the limit from datacenter.cfg. Refactoring the bandwidth limit handling for migration introduced calls such as described above, which broke applying the limit from datacenter.cfg for VM RAM/state migration. Reported in the community forum: https://forum.proxmox.com/threads/37920/post-513005 Signed-off-by: Fiona Ebner --- We could of course also fix the call sites in AbstractMigrate.pm and StorageTunnel.pm (or not pass [undef] as a list of storages to the tunnel in the first place), but supporting [undef] in Storage.pm directly seemed nicer IMHO, as we already support having some of the entries in the list undef (just not all yet). PVE/Storage.pm | 2 +- test/run_bwlimit_tests.pl | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/PVE/Storage.pm b/PVE/Storage.pm index c21b85e..89c7116 100755 --- a/PVE/Storage.pm +++ b/PVE/Storage.pm @@ -2082,7 +2082,7 @@ sub get_bandwidth_limit { } # Apply per-storage limits - if there are storages involved. - if (defined($storage_list) && @$storage_list) { + if (defined($storage_list) && grep { defined($_) } $storage_list->@*) { my $config = config(); # The Datastore.Allocate permission allows us to modify the per-storage diff --git a/test/run_bwlimit_tests.pl b/test/run_bwlimit_tests.pl index 5e59bf0..6ae379c 100755 --- a/test/run_bwlimit_tests.pl +++ b/test/run_bwlimit_tests.pl @@ -109,6 +109,8 @@ my @tests = ( [ ['restore', ['d50m40r30'], 0], 0, 'root / specific storage limit (restore)' ], [ ['migrate', undef, 100], 100, 'root / undef storage (migrate)' ], [ ['migrate', [], 100], 100, 'root / no storage (migrate)' ], + [ ['migrate', [undef], undef], 100, 'root / [undef] storage no override (migrate)' ], + [ ['migrate', [undef, undef], 200], 200, 'root / list of undef storages with override (migrate)' ], [ user => 'user1@test' ], [ ['unknown', ['nolimit'], undef], 100, 'generic default limit' ], @@ -189,6 +191,9 @@ my @tests = ( [ ['restore', ['nolimit', 'd20m40r30'], undef], 30, 'multiple storages specific limit with privileges on one of them (default limited) (restore)' ], [ ['restore', ['d20m40r30', 'm50'], 200], 60, 'multiple storages specific limit with privileges on one of them (global default limited) (restore)' ], [ ['move', ['nolimit', undef ], 40] , 40, 'multiple storages one undefined, passing 40 (move)' ], + [ ['move', undef, 100] , 80, 'undef storage, passing 100 (move)' ], + [ ['move', [undef], 100] , 80, '[undef] storage, passing 100 (move)' ], + [ ['move', [undef], undef] , 80, '[undef] storage, no override (move)' ], ); foreach my $t (@tests) { -- 2.30.2