From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) by lore.proxmox.com (Postfix) with ESMTPS id 762B91FF13F for ; Thu, 18 Jun 2026 13:50:46 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 8D02F164A6; Thu, 18 Jun 2026 13:50:44 +0200 (CEST) From: Lukas Sichert To: pve-devel@lists.proxmox.com Subject: [PATCH manager v3] fix #4503: ui: qemu: add detect zeroes disk option Date: Thu, 18 Jun 2026 13:49:57 +0200 Message-ID: <20260618115005.45266-1-l.sichert@proxmox.com> X-Mailer: git-send-email 2.47.3 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1781783351083 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.254 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 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] Message-ID-Hash: ITWCGLJ6TTVI7VQ5NHKKNCJO5R47GEF2 X-Message-ID-Hash: ITWCGLJ6TTVI7VQ5NHKKNCJO5R47GEF2 X-MailFrom: l.sichert@proxmox.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: Lukas Sichert X-Mailman-Version: 3.3.10 Precedence: list List-Id: Proxmox VE development discussion List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: When discard is enabled, qemu-server defaults to 'detect-zeroes=unmap'. This can have a significant performance impact for zero writes on some setups, while users might still want to keep guest discard/TRIM support enabled. Allow configuring the option independently so 'discard' can stay enabled while zero detection is disabled. Persist the checkbox state explicitly, as the backend treats an absent value as default-enabled behavior, resulting in 'detect-zeroes=unmap' when 'discard' is enabled. Link: https://bugzilla.proxmox.com/show_bug.cgi?id=4503 Signed-off-by: Lukas Sichert --- Notes: changes from v2 to v3 (thanks @Fabian): - add a comment explaining why this property is handled differently from the others changes from v1 to v2: - added bug-numer to commit header - appended bug-link to commit body www/manager6/qemu/HDEdit.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/www/manager6/qemu/HDEdit.js b/www/manager6/qemu/HDEdit.js index 1bb2bfda..2708d452 100644 --- a/www/manager6/qemu/HDEdit.js +++ b/www/manager6/qemu/HDEdit.js @@ -96,6 +96,9 @@ Ext.define('PVE.qemu.HDInputPanel', { PVE.Utils.propertyStringSet(me.drive, values.readOnly, 'ro', 'on'); PVE.Utils.propertyStringSet(me.drive, values.cache, 'cache'); PVE.Utils.propertyStringSet(me.drive, values.aio, 'aio'); + // persist an explicit false value, since the backend defaults to enabled + // when the option is omitted. + me.drive.detect_zeroes = values.detect_zeroes ? 1 : 0; ['mbps_rd', 'mbps_wr', 'iops_rd', 'iops_wr'].forEach((name) => { let burst_name = `${name}_max`; @@ -152,6 +155,7 @@ Ext.define('PVE.qemu.HDInputPanel', { values.diskformat = drive.format || 'raw'; values.cache = drive.cache || '__default__'; values.discard = drive.discard === 'on'; + values.detect_zeroes = PVE.Parser.parseBoolean(drive.detect_zeroes, 1); values.ssd = PVE.Parser.parseBoolean(drive.ssd); values.iothread = PVE.Parser.parseBoolean(drive.iothread); values.readOnly = PVE.Parser.parseBoolean(drive.ro); @@ -317,6 +321,12 @@ Ext.define('PVE.qemu.HDInputPanel', { reference: 'discard', name: 'discard', }, + { + xtype: 'proxmoxcheckbox', + fieldLabel: gettext('Detect zeroes'), + reference: 'detect_zeroes', + name: 'detect_zeroes', + }, { xtype: 'proxmoxcheckbox', name: 'iothread', -- 2.47.3