[pve-devel] [PATCH qemu-server v2 12/32] drive: introduce detect_zeroes_cmdline_option() helper

Fiona Ebner f.ebner at proxmox.com
Wed Jun 18 15:01:49 CEST 2025


Signed-off-by: Fiona Ebner <f.ebner at proxmox.com>
---

No changes in v2.

 src/PVE/QemuServer.pm       | 10 +---------
 src/PVE/QemuServer/Drive.pm | 16 ++++++++++++++++
 2 files changed, 17 insertions(+), 9 deletions(-)

diff --git a/src/PVE/QemuServer.pm b/src/PVE/QemuServer.pm
index 7bcc36db..5ab3a8c3 100644
--- a/src/PVE/QemuServer.pm
+++ b/src/PVE/QemuServer.pm
@@ -1577,15 +1577,7 @@ sub print_drive_commandline_full {
         if !defined($drive->{media}) && defined($vtype) && $vtype eq 'iso';
 
     if (!drive_is_cdrom($drive)) {
-        my $detectzeroes;
-        if (defined($drive->{detect_zeroes}) && !$drive->{detect_zeroes}) {
-            $detectzeroes = 'off';
-        } elsif ($drive->{discard}) {
-            $detectzeroes = $drive->{discard} eq 'on' ? 'unmap' : 'on';
-        } else {
-            # This used to be our default with discard not being specified:
-            $detectzeroes = 'on';
-        }
+        my $detectzeroes = PVE::QemuServer::Drive::detect_zeroes_cmdline_option($drive);
 
         # note: 'detect-zeroes' works per blockdev and we want it to persist
         # after the alloc-track is removed, so put it on 'file' directly
diff --git a/src/PVE/QemuServer/Drive.pm b/src/PVE/QemuServer/Drive.pm
index 73678ae2..c436d1d5 100644
--- a/src/PVE/QemuServer/Drive.pm
+++ b/src/PVE/QemuServer/Drive.pm
@@ -1111,4 +1111,20 @@ sub aio_cmdline_option {
     }
 }
 
+# must not be called for CD-ROMs
+sub detect_zeroes_cmdline_option {
+    my ($drive) = @_;
+
+    die "cannot use detect-zeroes for CD-ROM\n" if drive_is_cdrom($drive);
+
+    if (defined($drive->{detect_zeroes}) && !$drive->{detect_zeroes}) {
+        return 'off';
+    } elsif ($drive->{discard}) {
+        return $drive->{discard} eq 'on' ? 'unmap' : 'on';
+    }
+
+    # This used to be our default with discard not being specified:
+    return 'on';
+}
+
 1;
-- 
2.39.5





More information about the pve-devel mailing list