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 2F803F730 for ; Fri, 16 Dec 2022 14:42:34 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 12CA322AF2 for ; Fri, 16 Dec 2022 14:42:34 +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 ; Fri, 16 Dec 2022 14:42:33 +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 1D5824381A; Fri, 16 Dec 2022 14:42:33 +0100 (CET) Message-ID: Date: Fri, 16 Dec 2022 14:42:31 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.5.0 From: Fiona Ebner To: pve-devel@lists.proxmox.com, aderumier@odiso.com References: <20221209192726.1499142-1-aderumier@odiso.com> <20221209192726.1499142-11-aderumier@odiso.com> Content-Language: en-US In-Reply-To: <20221209192726.1499142-11-aderumier@odiso.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-SPAM-LEVEL: Spam detection results: 0 AWL 0.028 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 NICE_REPLY_A -0.001 Looks like a legit reply (A) SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record URIBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [memory.pm] Subject: Re: [pve-devel] [PATCH qemu-server 10/10] memory: fix hotplug with virtiomem && maxmem 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, 16 Dec 2022 13:42:34 -0000 Am 09.12.22 um 20:27 schrieb Alexandre Derumier: > diff --git a/PVE/QemuServer/Memory.pm b/PVE/QemuServer/Memory.pm > index 70ab65a..84a9126 100644 > --- a/PVE/QemuServer/Memory.pm > +++ b/PVE/QemuServer/Memory.pm > @@ -9,6 +9,7 @@ use PVE::Exception qw(raise raise_param_exc); > use PVE::QemuServer; > use PVE::QemuServer::Monitor qw(mon_cmd); > use PVE::QemuServer::PCI qw(print_pci_addr); > +use PVE::GuestHelpers qw(safe_string_ne safe_num_ne safe_boolean_ne); > > use base qw(Exporter); > > @@ -230,24 +231,32 @@ sub foreach_reverse_dimm { > } > > sub qemu_memory_hotplug { > - my ($vmid, $conf, $defaults, $opt, $value) = @_; > + my ($vmid, $conf, $new_mem) = @_; > > - return $value if !PVE::QemuServer::check_running($vmid); > + return if !PVE::QemuServer::check_running($vmid); Unrelated change not belonging in this patch > > - my $sockets = 1; > - $sockets = $conf->{sockets} if $conf->{sockets}; > + my $confmem = PVE::QemuServer::parse_memory($conf->{memory}); > + > + # skip non hotpluggable value > + if (safe_string_ne($new_mem->{max}, $confmem->{max}) || > + safe_boolean_ne($new_mem->{virtio}, $confmem->{virtio})) { > + die "skip\n"; This special error "return" value should really not be used here. It's just too intransparent in the long run. This should be done by the callers and actually belongs in the patches introducing 'virtio' and 'max' (handling) respectively. > + } > + > + my $value = $new_mem->{current}; > + my $memory = $confmem->{current}; > > - my $memory = get_current_memory($conf); > return $value if $value == $memory; > > + my $sockets = 1; > + $sockets = $conf->{sockets} if $conf->{sockets}; > + > my $static_memory = get_static_mem($conf); > > die "memory can't be lower than $static_memory MB" if $value < $static_memory; > my $MAX_MEM = get_max_mem($conf); > die "you cannot add more memory than max mem $MAX_MEM MB!\n" if $value > $MAX_MEM; > > - my $confmem = PVE::QemuServer::parse_memory($conf->{memory}); > - > if ($confmem->{virtio}) { > my $blocksize = get_virtiomem_block_size($conf); > my $requested_size = ($value - $static_memory) / $sockets * 1024 * 1024;