[pve-devel] [PATCH v2 qemu-server] Simplify QEMU version check and require 3.0+

Stefan Reiter s.reiter at proxmox.com
Mon Feb 10 12:20:53 CET 2020


Some of the recent QMP changes require at least 2.8.0, but since the
oldest version we officially package for 6.x is 4.0.0 anyway, checking
for at least 3.0 should not break anyone's setup.

Note that this does not affect machine version checks, only the
installed QEMU binary version.

Signed-off-by: Stefan Reiter <s.reiter at proxmox.com>
---

v1 -> v2:
* handle error in kvm_user_version
* corrected commit message (2.12 -> 2.8)

@Thomas: If kvm_user_version() failed, we actually died in min_version before.
You're suggested code also didn't quite work, because it still printed warnings
in case $kvmver was undef.

 PVE/QemuServer.pm | 14 +++++---------
 1 file changed, 5 insertions(+), 9 deletions(-)

diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm
index 318ee54..d30cdb5 100644
--- a/PVE/QemuServer.pm
+++ b/PVE/QemuServer.pm
@@ -3405,7 +3405,6 @@ sub config_to_command {
     my $devices = [];
     my $pciaddr = '';
     my $bridges = {};
-    my $vernum = 0; # unknown
     my $ostype = $conf->{ostype};
     my $winversion = windows_version($ostype);
     my $kvm = $conf->{kvm};
@@ -3415,6 +3414,11 @@ sub config_to_command {
     my $kvm_binary = get_command_for_arch($arch);
     my $kvmver = kvm_user_version($kvm_binary);
 
+    if (!$kvmver || $kvmver !~ m/^(\d+)\.(\d+)/ || $1 < 3) {
+	$kvmver //= "undefined";
+	die "Detected old QEMU binary ('$kvmver', at least 3.0 is required)\n";
+    }
+
     my $add_pve_version = min_version($kvmver, 4, 1);
 
     my $machine_type = get_vm_machine($conf, $forcemachine, $arch, $add_pve_version);
@@ -3430,14 +3434,6 @@ sub config_to_command {
 	    if !defined kvm_version();
     }
 
-    if ($kvmver =~ m/^(\d+)\.(\d+)$/) {
-	$vernum = $1*1000000+$2*1000;
-    } elsif ($kvmver =~ m/^(\d+)\.(\d+)\.(\d+)$/) {
-	$vernum = $1*1000000+$2*1000+$3;
-    }
-
-    die "detected old qemu-kvm binary ($kvmver)\n" if $vernum < 15000;
-
     my $q35 = PVE::QemuServer::Machine::machine_type_is_q35($conf);
     my $hotplug_features = parse_hotplug_features(defined($conf->{hotplug}) ? $conf->{hotplug} : '1');
     my $use_old_bios_files = undef;
-- 
2.20.1




More information about the pve-devel mailing list