[pve-devel] [PATCH v4 qemu-server] Simplify QEMU version check and require 3.0+
Stefan Reiter
s.reiter at proxmox.com
Wed Feb 12 11:10:56 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>
---
Whoops wrong file, sorry for noise.
v3 -> v4:
* use correct test description for new test
v2 -> v3:
* include test case and fix existing simple1 test
v1 -> v2:
* handle error in kvm_user_version
* corrected commit message (2.12 -> 2.8)
PVE/QemuServer.pm | 14 +++++---------
test/cfg2cmd/old-qemu.conf | 4 ++++
test/cfg2cmd/simple1.conf | 2 +-
3 files changed, 10 insertions(+), 10 deletions(-)
create mode 100644 test/cfg2cmd/old-qemu.conf
diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm
index 27b9866..23176dd 100644
--- a/PVE/QemuServer.pm
+++ b/PVE/QemuServer.pm
@@ -3415,7 +3415,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};
@@ -3425,6 +3424,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);
@@ -3458,14 +3462,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;
diff --git a/test/cfg2cmd/old-qemu.conf b/test/cfg2cmd/old-qemu.conf
new file mode 100644
index 0000000..08e852c
--- /dev/null
+++ b/test/cfg2cmd/old-qemu.conf
@@ -0,0 +1,4 @@
+# TEST: Test QEMU version detection and expect fail on old version
+# QEMU_VERSION: 2.12.1
+# EXPECT_ERROR: Detected old QEMU binary ('2.12.1', at least 3.0 is required)
+smbios1: uuid=7b10d7af-b932-4c66-b2c3-3996152ec465
diff --git a/test/cfg2cmd/simple1.conf b/test/cfg2cmd/simple1.conf
index 10a4c31..16a2402 100644
--- a/test/cfg2cmd/simple1.conf
+++ b/test/cfg2cmd/simple1.conf
@@ -1,5 +1,5 @@
# TEST: Simple test for a basic configuration with no special things
-# QEMU_VERSION: 2.12.1
+# QEMU_VERSION: 3.0
bootdisk: scsi0
cores: 3
ide2: none,media=cdrom
--
2.20.1
More information about the pve-devel
mailing list