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:
parent
2a2e0a8801
commit
93681a3683
@ -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;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user