
On Fri, 2009-08-07 at 13:02 +0100, Daniel P. Berrange wrote:
On Fri, Aug 07, 2009 at 01:57:34PM +0200, Chris Lalancette wrote:
Anton Protopopov wrote:
Hi.
Libvirt tryes to extract kvm version from the string "QEMU PC emulator version <major>.<minor>.<micro> (kvm-<version>)..." For examle, # kvm -help | head -1 QEMU PC emulator version 0.10.0 (kvm-85), Copyright (c) 2003-2008 Fabrice Bellard
The problem occures if you are trying to run it on the devel version of kvm: # kvm -help | head -1 QEMU PC emulator version 0.10.0 (kvm-devel), Copyright (c) 2003-2008 Fabrice Bellard The virParseNumber() obvioulsy fails on the "devel" string here. I propose to setup `kvm_version' to 1000 (that's enough, I think) in that case, so all checks, such as if (kvm_version > 74) ... will pass.
Yeah, I've run into this too. The problem with just setting kvm_version to a huge number is that if you built a kvm development snapshot a long time in the past, and you run it now, then you will be turning on features your old development snapshot didn't necessarily have. On the other hand, if you are running development snapshots, you get to keep both pieces when things break. Maybe we can set the kvm_version number very high like you say, but also dump a warning message out to the logfile saying this is a development version so the poor sap who has to debug something like this has a fighting chance. Any other opinions?
Fix kvm to include a relevant version number instead of just the 'devel'
eg, Instead of
QEMU PC emulator version 0.10.0 (kvm-devel), Copyright (c) 2003-2008
have
QEMU PC emulator version 0.10.0 (kvm-85-devel), Copyright (c) 2003-2008
So that its clear this development release, is the one immediately following on from the kvm-85 stable release. That would let us automatically enable the features upto & including kvm-85 which would at least make it functional, albeit without letting us use the new features.
kvm_version shouldn't be needed for newer versions of qemu-kvm - we should just use the qemu version to detect new features. i.e. we only need to be able to parse kvm_version for older releases; for newer releases we just need to be able to detect the qemu version and whether it's upstream qemu or the kvm fork of qemu. That's why we do: if (STRPREFIX(p, QEMU_KVM_VER_PREFIX)) { *is_kvm = 1; p += strlen(QEMU_KVM_VER_PREFIX); } we don't actually parse the number because, for kvm-86 an later, we don't actually care about the kvm version number. I've just sent a patch to kvm@vger to change the default version string from 'kvm-devel' to 'qemu-kvm-devel'. That's enough to fix the problem for us. Cheers, Mark.