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 B33191FF168 for ; Tue, 4 Feb 2025 16:51:10 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 7AACD1A835; Tue, 4 Feb 2025 16:51:07 +0100 (CET) From: Fiona Ebner To: pve-devel@lists.proxmox.com Date: Tue, 4 Feb 2025 16:51:01 +0100 Message-Id: <20250204155101.151349-1-f.ebner@proxmox.com> X-Mailer: git-send-email 2.39.5 MIME-Version: 1.0 X-SPAM-LEVEL: Spam detection results: 0 AWL -0.047 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 RCVD_IN_VALIDITY_CERTIFIED_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RCVD_IN_VALIDITY_RPBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RCVD_IN_VALIDITY_SAFE_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. 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. [qmphelpers.pm] Subject: [pve-devel] [PATCH v2 qemu-server] qmp helpers: device add/del: use HMP interface 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" Fixes device hotplug in combination with QEMU 9.2. QEMU commit be93fd5372 ("qdev-monitor: avoid QemuOpts in QMP device_add") notes: > This patch changes the behavior of QMP device_add but not HMP > device_add. QMP clients that sent incorrectly typed device_add QMP > commands no longer work. This is a breaking change but clients should be > using the correct types already. The qemu_deviceadd() helper does not have the required type information right now, so switch to using HMP, which still behaves the same when passing a device commandline string. QEMU commit be93fd5372 fixes passing in complex properties via JSON, but the qemu_deviceadd() helper never uses any such, as it already only received a string (and naively split it up). Use HMP for 'device_del' too, simply to keep the qemu_deviceadd() and qemu_devicedel() helpers consistent. Switching back to QMP using the correct types in the JSON can still be done later. Unfortunately, 'qmp-query-schema' does not provide device-specific types, so another way is needed. A timeout of 30 seconds is used rather then relying on the low default like before, since device plug operations require actions by the guest kernel and might require IO. Device plug is often an interactive operation, so a too high timeout could lead to bad UX. Should specific devices need a higher timeout, it can still be increased further for them in the future. Signed-off-by: Fiona Ebner --- Changes in v2: * also mention 'del' in commit title * fix commit message (bug #5985 is not actually fixed by this, that requires bumping the timeout for netdev_add) * use 30 seconds as a timeout (see commit message for rationale) PVE/QemuServer/QMPHelpers.pm | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/PVE/QemuServer/QMPHelpers.pm b/PVE/QemuServer/QMPHelpers.pm index 1bc9e5dc..9b077394 100644 --- a/PVE/QemuServer/QMPHelpers.pm +++ b/PVE/QemuServer/QMPHelpers.pm @@ -25,15 +25,14 @@ sub qemu_deviceadd { my ($vmid, $devicefull) = @_; $devicefull = "driver=".$devicefull; - my %options = split(/[=,]/, $devicefull); - mon_cmd($vmid, "device_add" , %options); + PVE::QemuServer::Monitor::hmp_cmd($vmid, "device_add $devicefull", 30); } sub qemu_devicedel { my ($vmid, $deviceid) = @_; - my $ret = mon_cmd($vmid, "device_del", id => $deviceid); + PVE::QemuServer::Monitor::hmp_cmd($vmid, "device_del $deviceid", 30); } sub qemu_objectadd { -- 2.39.5 _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel