From 12e1d472e3d8e7f301f05fd7d8fb13f424f40737 Mon Sep 17 00:00:00 2001 From: Dominik Csapak Date: Wed, 27 Oct 2021 13:35:27 +0200 Subject: [PATCH] drives: expose 'readonly' flag of qemu for scsi/virtio this allows a user to set a drive to 'read-only'. This can be useful if a disk should not be written to, or if the backing file/source is not writable (like a mapped pbs backup to /dev/loopX). the option is named 'ro', to achieve consistency with containers while this could also be achieved by setting 'snapshot=1', this would create a temporary file in /var/tmp which can get quite big. Signed-off-by: Dominik Csapak --- PVE/QemuServer.pm | 6 ++++++ PVE/QemuServer/Drive.pm | 11 +++++++++++ 2 files changed, 17 insertions(+) diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm index 6ee7b556..ba6308cf 100644 --- a/PVE/QemuServer.pm +++ b/PVE/QemuServer.pm @@ -1597,6 +1597,12 @@ sub print_drive_commandline_full { $opts .= ",snapshot=$v"; } + # ro is 'readonly', and only accepts on|off + if (defined($drive->{ro})) { + my $v = $drive->{ro} ? 'on' : 'off'; + $opts .= ",readonly=$v"; + } + foreach my $type (['', '-total'], [_rd => '-read'], [_wr => '-write']) { my ($dir, $qmpname) = @$type; if (my $v = $drive->{"mbps$dir"}) { diff --git a/PVE/QemuServer/Drive.pm b/PVE/QemuServer/Drive.pm index ff184343..97b82f9c 100644 --- a/PVE/QemuServer/Drive.pm +++ b/PVE/QemuServer/Drive.pm @@ -175,6 +175,14 @@ my %queues_fmt = ( } ); +my %readonly_fmt = ( + ro => { + type => 'boolean', + description => "Whether the drive is read-only.", + optional => 1, + }, +); + my %scsiblock_fmt = ( scsiblock => { type => 'boolean', @@ -269,6 +277,7 @@ my $scsi_fmt = { %drivedesc_base, %iothread_fmt, %queues_fmt, + %readonly_fmt, %scsiblock_fmt, %ssd_fmt, %wwn_fmt, @@ -297,6 +306,7 @@ PVE::JSONSchema::register_standard_option("pve-qm-sata", $satadesc); my $virtio_fmt = { %drivedesc_base, %iothread_fmt, + %readonly_fmt, }; my $virtiodesc = { optional => 1, @@ -399,6 +409,7 @@ my $alldrive_fmt = { %iothread_fmt, %model_fmt, %queues_fmt, + %readonly_fmt, %scsiblock_fmt, %ssd_fmt, %wwn_fmt, -- 2.39.5