1
0
mirror of https://gitlab.com/libvirt/libvirt.git synced 2025-03-07 17:28:15 +00:00

qemu: don't fail capabilities check on 0.12.x

Fixes regression introduced in commit 2211518, where all qemu 0.12.x
fails to start, as does qemu 0.13.x lacking the pci-assign device.
Prior to 2211518, the code was just ignoring a non-zero exit status
from the qemu child, but the virCommand code checked this to avoid
masking any other issues, which means the real bug of provoking
non-zero exit status has been latent for a longer time.

* src/qemu/qemu_capabilities.c (qemuCapsExtractVersionInfo): Check
for -device driver,? support.
(qemuCapsExtractDeviceStr): Avoid failure if all probed devices
are unsupported.
Reported by Ken Congyang.
This commit is contained in:
Eric Blake 2011-01-18 09:47:30 -07:00
parent 2a2e0a8801
commit 93681a3683

View File

@ -1048,10 +1048,14 @@ qemuCapsExtractDeviceStr(const char *qemu,
/* Cram together all device-related queries into one invocation;
* the output format makes it possible to distinguish what we
* need. Unrecognized '-device bogus,?' cause an error in
* isolation, but are silently ignored in combination with
* '-device ?'. */
* need. With qemu 0.13.0 and later, unrecognized '-device
* bogus,?' cause an error in isolation, but are silently ignored
* in combination with '-device ?'. Qemu 0.12.x doesn't
* understand '-device name,?', and always exits with status 1 for
* the simpler '-device ?', so this function is really only useful
* for parsing out features added in 0.13.0 or later. */
cmd = virCommandNewArgList(qemu,
"-device", "?",
"-device", "pci-assign,?",
"-device", "virtio-blk-pci,?",
NULL);
@ -1119,7 +1123,10 @@ int qemuCapsExtractVersionInfo(const char *qemu,
&version, &is_kvm, &kvm_version) == -1)
goto cleanup;
/* Only call qemuCapsExtractDeviceStr for qemu 0.13.0+, since it
* won't set any additional flags for qemu 0.12.x. */
if ((flags & QEMUD_CMD_FLAG_DEVICE) &&
strstr(help, "-device driver,?") &&
qemuCapsExtractDeviceStr(qemu, &flags) < 0)
goto cleanup;