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 5EE301FF141 for ; Tue, 16 Jun 2026 15:16:13 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id A5AD89CF1; Tue, 16 Jun 2026 15:16:12 +0200 (CEST) Mime-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=UTF-8 Date: Tue, 16 Jun 2026 15:16:07 +0200 Message-Id: Subject: Re: [PATCH manager] ui: qemu: add detect zeroes disk option From: "Lukas Sichert" To: =?utf-8?q?Fabian_Gr=C3=BCnbichler?= , References: <20260608083614.35448-1-l.sichert@proxmox.com> <1781613942.xdqc7it20k.astroid@yuna.none> In-Reply-To: <1781613942.xdqc7it20k.astroid@yuna.none> X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1781615712657 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.259 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 Message-ID-Hash: ESP7MB2WQJEYS2O7VVF4E4SGTQFWHMB3 X-Message-ID-Hash: ESP7MB2WQJEYS2O7VVF4E4SGTQFWHMB3 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 X-Mailman-Version: 3.3.10 Precedence: list List-Id: Proxmox VE development discussion List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: On 2026-06-16 15:01, Fabian Gr=C3=BCnbichler w= rote: > if I am not mistaken, this is a fix for > https://bugzilla.proxmox.com/show_bug.cgi?id=3D4503 ? Yes, I have also corrected this in a v2 already [1], but I forgot to send a superseded-by. Sorry for the confusion. [1] https://lore.proxmox.com/all/20260610131827.11092-1-l.sichert@proxmox.c= om/ > > On June 8, 2026 10:36 am, Lukas Sichert wrote: >> When discard is enabled, qemu-server defaults to `detect-zeroes=3Dunmap`= . >> 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. >>=20 >> 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 the default-enabled behavior. >>=20 >> Signed-off-by: Lukas Sichert >> --- >> www/manager6/qemu/HDEdit.js | 8 ++++++++ >> 1 file changed, 8 insertions(+) >>=20 >> diff --git a/www/manager6/qemu/HDEdit.js b/www/manager6/qemu/HDEdit.js >> index 1bb2bfda..d1d1b0fa 100644 >> --- a/www/manager6/qemu/HDEdit.js >> +++ b/www/manager6/qemu/HDEdit.js >> @@ -96,6 +96,7 @@ Ext.define('PVE.qemu.HDInputPanel', { >> PVE.Utils.propertyStringSet(me.drive, values.readOnly, 'ro', 'o= n'); >> PVE.Utils.propertyStringSet(me.drive, values.cache, 'cache'); >> PVE.Utils.propertyStringSet(me.drive, values.aio, 'aio'); >> + me.drive.detect_zeroes =3D values.detect_zeroes ? 1 : 0; > > this should probably have a comment why this line is deviating from the > ones above (to not lose an explicit false value that clashes with the > implicit true default value of the backend. Thanks for looking over this. I will fix it in a v3. > >> =20 >> ['mbps_rd', 'mbps_wr', 'iops_rd', 'iops_wr'].forEach((name) =3D= > { >> let burst_name =3D `${name}_max`; >> @@ -152,6 +153,7 @@ Ext.define('PVE.qemu.HDInputPanel', { >> values.diskformat =3D drive.format || 'raw'; >> values.cache =3D drive.cache || '__default__'; >> values.discard =3D drive.discard =3D=3D=3D 'on'; >> + values.detect_zeroes =3D PVE.Parser.parseBoolean(drive.detect_z= eroes, 1); >> values.ssd =3D PVE.Parser.parseBoolean(drive.ssd); >> values.iothread =3D PVE.Parser.parseBoolean(drive.iothread); >> values.readOnly =3D PVE.Parser.parseBoolean(drive.ro); >> @@ -317,6 +319,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', >> --=20 >> 2.47.3 >>=20 >>=20 >>=20 >>=20 >>=20 >>=20