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.her...@proxmox.com>
> Fixes: 919e69d0 ("machine: add check_and_pin_machine_string() helper")
> Signed-off-by: Fiona Ebner <f.eb...@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@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

Reply via email to