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.