From deb734e348bfe408602925594bec2870c05ae89c Mon Sep 17 00:00:00 2001 From: Stefan Reiter Date: Mon, 5 Jul 2021 11:14:12 +0200 Subject: [PATCH] api: always add new CD drives to bootorder Attaching an ISO image to a VM is usually/often done for two reasons: * booting an installer image * supplying additional drivers to an installer (e.g. virtio) Both of these cases (the latter at least with SeaBIOS and the Windows installer) require the disk to be marked as bootable. For this reason, enable the bootable flag for all new CDROM drives attached to a VM by adding it to the bootorder list. It is appended to the end, as otherwise it would cause new drives to boot before already existing boot targets, which would be a more grave (and IMO bad) behaviour change. Signed-off-by: Stefan Reiter --- PVE/API2/Qemu.pm | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/PVE/API2/Qemu.pm b/PVE/API2/Qemu.pm index f2557e32..6038b28c 100644 --- a/PVE/API2/Qemu.pm +++ b/PVE/API2/Qemu.pm @@ -1357,6 +1357,14 @@ my $update_vm_api = sub { if defined($conf->{pending}->{$opt}); &$create_disks($rpcenv, $authuser, $conf->{pending}, $arch, $storecfg, $vmid, undef, {$opt => $param->{$opt}}); + + # append new CD drives to bootorder to mark them bootable + my $drive = PVE::QemuServer::parse_drive($opt, $param->{$opt}); + if (PVE::QemuServer::drive_is_cdrom($drive, 1)) { + push @bootorder, $opt; + $conf->{pending}->{boot} = PVE::QemuServer::print_bootorder(\@bootorder); + $modified->{boot} = 1; + } } elsif ($opt =~ m/^serial\d+/) { if ((!defined($conf->{$opt}) || $conf->{$opt} eq 'socket') && $param->{$opt} eq 'socket') { $rpcenv->check_vm_perm($authuser, $vmid, undef, ['VM.Config.HWType']); -- 2.39.5