[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