[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