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;
|
/* Cram together all device-related queries into one invocation;
|
||||||
* the output format makes it possible to distinguish what we
|
* the output format makes it possible to distinguish what we
|
||||||
* need. Unrecognized '-device bogus,?' cause an error in
|
* need. With qemu 0.13.0 and later, unrecognized '-device
|
||||||
* isolation, but are silently ignored in combination with
|
* bogus,?' cause an error in isolation, but are silently ignored
|
||||||
* '-device ?'. */
|
* 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,
|
cmd = virCommandNewArgList(qemu,
|
||||||
|
"-device", "?",
|
||||||
"-device", "pci-assign,?",
|
"-device", "pci-assign,?",
|
||||||
"-device", "virtio-blk-pci,?",
|
"-device", "virtio-blk-pci,?",
|
||||||
NULL);
|
NULL);
|
||||||
@ -1119,7 +1123,10 @@ int qemuCapsExtractVersionInfo(const char *qemu,
|
|||||||
&version, &is_kvm, &kvm_version) == -1)
|
&version, &is_kvm, &kvm_version) == -1)
|
||||||
goto cleanup;
|
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) &&
|
if ((flags & QEMUD_CMD_FLAG_DEVICE) &&
|
||||||
|
strstr(help, "-device driver,?") &&
|
||||||
qemuCapsExtractDeviceStr(qemu, &flags) < 0)
|
qemuCapsExtractDeviceStr(qemu, &flags) < 0)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user