should we (as follow-up) rename the parameter there to `is_readonly`? that we currently only have the template case where we set it makes the point a bit moot, but it also seems a bit "leaky" ;)
On August 12, 2025 4:37 pm, Fiona Ebner wrote: > This is in preparation to remove the hidden dependency from the Drive > module to QemuConfig. > > Note that the drive_is_read_only() can be replaced with $is_template > for OVMF, because the helper only behaves differently for IDE and > SATA, but not for EFI disks. > > Signed-off-by: Fiona Ebner <f.eb...@proxmox.com> > --- > src/PVE/QemuServer.pm | 3 ++- > src/PVE/QemuServer/OVMF.pm | 20 ++++++++++---------- > 2 files changed, 12 insertions(+), 11 deletions(-) > > diff --git a/src/PVE/QemuServer.pm b/src/PVE/QemuServer.pm > index cfc54568..d6657a1f 100644 > --- a/src/PVE/QemuServer.pm > +++ b/src/PVE/QemuServer.pm > @@ -3361,8 +3361,9 @@ sub config_to_command { > 'machine-version' => $machine_version, > q35 => $q35, > }; > + my $is_template = PVE::QemuConfig->is_template($conf); > my ($ovmf_cmd, $ovmf_machine_flags) = > PVE::QemuServer::OVMF::print_ovmf_commandline( > - $conf, $storecfg, $vmid, $hw_info, $version_guard, > + $conf, $storecfg, $vmid, $hw_info, $version_guard, $is_template, > ); > push $cmd->@*, $ovmf_cmd->@*; > push $machineFlags->@*, $ovmf_machine_flags->@*; > diff --git a/src/PVE/QemuServer/OVMF.pm b/src/PVE/QemuServer/OVMF.pm > index 8948651c..72f5be0d 100644 > --- a/src/PVE/QemuServer/OVMF.pm > +++ b/src/PVE/QemuServer/OVMF.pm > @@ -10,7 +10,7 @@ use PVE::Storage; > use PVE::Tools; > > use PVE::QemuServer::Blockdev; > -use PVE::QemuServer::Drive qw(checked_volume_format drive_is_read_only > parse_drive print_drive); > +use PVE::QemuServer::Drive qw(checked_volume_format parse_drive print_drive); > use PVE::QemuServer::QemuImage; > > my $EDK2_FW_BASE = '/usr/share/pve-edk2-firmware/'; > @@ -79,7 +79,7 @@ my sub get_ovmf_files($$$$) { > } > > my sub print_ovmf_drive_commandlines { > - my ($conf, $storecfg, $vmid, $hw_info, $version_guard) = @_; > + my ($conf, $storecfg, $vmid, $hw_info, $version_guard, $is_template) = > @_; > > my ($amd_sev_type, $arch, $q35) = $hw_info->@{qw(amd-sev-type arch q35)}; > > @@ -109,7 +109,7 @@ my sub print_ovmf_drive_commandlines { > > $var_drive_str .= ",size=" . (-s $ovmf_vars) > if $format eq 'raw' && $version_guard->(4, 1, 2); > - $var_drive_str .= ',readonly=on' if drive_is_read_only($conf, $d); > + $var_drive_str .= ',readonly=on' if $is_template; > } else { > log_warn("no efidisk configured! Using temporary efivars disk."); > my $path = "/tmp/$vmid-ovmf.fd"; > @@ -145,7 +145,7 @@ sub create_efidisk($$$$$$$$) { > } > > my sub generate_ovmf_blockdev { > - my ($conf, $storecfg, $vmid, $hw_info) = @_; > + my ($conf, $storecfg, $vmid, $hw_info, $is_template) = @_; > > my ($amd_sev_type, $arch, $machine_version, $q35) = > $hw_info->@{qw(amd-sev-type arch machine-version q35)}; > @@ -187,8 +187,7 @@ my sub generate_ovmf_blockdev { > $drive->{cache} = 'writeback' if !$drive->{cache}; > > my $extra_blockdev_options = {}; > - # extra protection for templates, but SATA and IDE don't support it.. > - $extra_blockdev_options->{'read-only'} = 1 if drive_is_read_only($conf, > $drive); > + $extra_blockdev_options->{'read-only'} = 1 if $is_template; > > $extra_blockdev_options->{size} = -s $ovmf_vars if $format eq 'raw'; > > @@ -202,7 +201,7 @@ my sub generate_ovmf_blockdev { > } > > sub print_ovmf_commandline { > - my ($conf, $storecfg, $vmid, $hw_info, $version_guard) = @_; > + my ($conf, $storecfg, $vmid, $hw_info, $version_guard, $is_template) = > @_; > > my $amd_sev_type = $hw_info->{'amd-sev-type'}; > > @@ -217,7 +216,7 @@ sub print_ovmf_commandline { > } else { > if ($version_guard->(10, 0, 0)) { # for the switch to -blockdev > my ($code_blockdev, $vars_blockdev, $throttle_group) = > - generate_ovmf_blockdev($conf, $storecfg, $vmid, $hw_info); > + generate_ovmf_blockdev($conf, $storecfg, $vmid, $hw_info, > $is_template); > > push $cmd->@*, '-object', to_json($throttle_group, { canonical > => 1 }); > push $cmd->@*, '-blockdev', to_json($code_blockdev, { canonical > => 1 }); > @@ -225,8 +224,9 @@ sub print_ovmf_commandline { > push $machine_flags->@*, "pflash0=$code_blockdev->{'node-name'}", > "pflash1=$vars_blockdev->{'node-name'}"; > } else { > - my ($code_drive_str, $var_drive_str) = > - print_ovmf_drive_commandlines($conf, $storecfg, $vmid, > $hw_info, $version_guard); > + my ($code_drive_str, $var_drive_str) = > print_ovmf_drive_commandlines( > + $conf, $storecfg, $vmid, $hw_info, $version_guard, > $is_template, > + ); > push $cmd->@*, '-drive', $code_drive_str; > push $cmd->@*, '-drive', $var_drive_str; > } > -- > 2.47.2 > > > > _______________________________________________ > pve-devel mailing list > pve-devel@lists.proxmox.com > https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel > > > _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel