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 402BA98EFB for ; Fri, 28 Apr 2023 14:32:46 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 1BBB9336D5 for ; Fri, 28 Apr 2023 14:32:16 +0200 (CEST) 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 ; Fri, 28 Apr 2023 14:32:15 +0200 (CEST) Received: from proxmox-new.maurer-it.com (localhost.localdomain [127.0.0.1]) by proxmox-new.maurer-it.com (Proxmox) with ESMTP id EA01146491 for ; Fri, 28 Apr 2023 14:32:14 +0200 (CEST) From: Fiona Ebner To: pve-devel@lists.proxmox.com Date: Fri, 28 Apr 2023 14:32:07 +0200 Message-Id: <20230428123209.124097-2-f.ebner@proxmox.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230428123209.124097-1-f.ebner@proxmox.com> References: <20230428123209.124097-1-f.ebner@proxmox.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 0 AWL -0.046 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 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 - URIBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [proxmox.com, qemuserver.pm] Subject: [pve-devel] [PATCH qemu-server 1/1] block resize: avoid passing zero size to QMP command 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: Fri, 28 Apr 2023 12:32:46 -0000 Commit 7246e8f9 ("Set zero $size and continue if volume_resize() returns false") mentions that this is needed for "some storages with backing block devices to do online resize" and since this patch came together [0] with pve-storage commit a4aee43 ("Fix RBD resize with krbd option enabled."), it's safe to assume that RBD with krbd is meant. But it should be the same situation for any external plugin relying on the same behavior. Other storages backed by block devices like LVM(-thin) and ZFS return 1 and the new size respectively, and the code is older than the above mentioned commits. So really, the RBD plugin just should have returned a positive value to be in-line with those and there should be no need to pass 0 to the block_resize QMP command either. Actually, it's a hack, because the block_resize QMP command does not actually do special handling for the value 0. It's just that in the case of a block device, QEMU won't try to resize it (and not fail for shrinkage). But the size in the raw driver's BlockDriverState is temporarily set to 0 (which is not nice), until the sector count is refreshed, where raw_co_getlength is called, which queries the new size and sets the size in the raw driver's BlockDriverState again as a side effect. It's not known to cause any issues, but bdrv_getlength is a coroutine wrapper starting from QEMU 8.0.0, and it's just better to avoid setting a completely wrong value even temporarily. Just pass the actually requested size like is done for LVM(thin) and ZFS. [0]: https://lists.proxmox.com/pipermail/pve-devel/2017-January/025060.html Signed-off-by: Fiona Ebner --- PVE/QemuServer.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm index c1d0fd2d..86d88914 100644 --- a/PVE/QemuServer.pm +++ b/PVE/QemuServer.pm @@ -4766,7 +4766,7 @@ sub qemu_block_resize { my $running = check_running($vmid); - $size = 0 if !PVE::Storage::volume_resize($storecfg, $volid, $size, $running); + PVE::Storage::volume_resize($storecfg, $volid, $size, $running); return if !$running; -- 2.30.2