[pve-devel] applied: [PATCH qemu-server] api: create/update vm: avoid printing empty machine string
Fabian Grünbichler
f.gruenbichler at proxmox.com
Mon Jan 20 14:45:54 CET 2025
On January 20, 2025 2:27 pm, Fiona Ebner wrote:
> While no problem is known with having an empty machine string in the
> configuration and it was already possible setting an empty machine
> manually via 'qm set', the behavior changed because of commit 919e69d0
> ("machine: add check_and_pin_machine_string() helper") and there is
> potential for problematic edge cases. Restore the previous behavior.
>
> Pinning is also required when there is no given machine type, so the
> call to check_and_pin_machine_string() should stay unconditional.
>
> For update, pinning was recently added by commit 7a9570f3 ("api:
> update vm config: pin machine version when switching to windows os
> type"), so bring that in-line with the behavior for create too.
>
> Another idea would've been to just return the default machine in
> check_and_pin_machine_string(), but that would also be a change in
> behavior. In particular, the default depends on the arch, so an empty
> machine type will pick the default machine for the currently
> configured arch even when the arch is later changed.
>
> Reported-by: Daniel Herzig <d.herzig at proxmox.com>
> Fixes: 919e69d0 ("machine: add check_and_pin_machine_string() helper")
> Signed-off-by: Fiona Ebner <f.ebner at proxmox.com>
> ---
> PVE/API2/Qemu.pm | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/PVE/API2/Qemu.pm b/PVE/API2/Qemu.pm
> index 8acd8d9f..45fe6ea6 100644
> --- a/PVE/API2/Qemu.pm
> +++ b/PVE/API2/Qemu.pm
> @@ -1243,8 +1243,9 @@ __PACKAGE__->register_method({
> }
>
> # always pin Windows' machine version on create, they get confused too easily
> - $conf->{machine} = PVE::QemuServer::Machine::check_and_pin_machine_string(
> + my $machine_string = PVE::QemuServer::Machine::check_and_pin_machine_string(
> $conf->{machine}, $conf->{ostype});
> + $conf->{machine} = $machine_string if $machine_string;
>
> $conf->{lock} = 'import' if $live_import_mapping;
>
> @@ -2120,9 +2121,10 @@ my $update_vm_api = sub {
> && !$modified->{machine} # detects deletion
> ) {
> eval {
> - $conf->{pending}->{machine} =
> + my $machine_string =
> PVE::QemuServer::Machine::check_and_pin_machine_string(
> $conf->{machine}, $param->{ostype});
> + $conf->{pending}->{machine} = $machine_string if $machine_string;
> };
> print "automatic pinning of machine version failed - $@" if $@;
> }
> --
> 2.39.5
>
>
>
> _______________________________________________
> pve-devel mailing list
> pve-devel at lists.proxmox.com
> https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
>
>
>
More information about the pve-devel
mailing list