Could anyone give it a review? Thanks.
A scenario is that it will cause below error when disabled tcg from qemu
side:
lyan@xryan:~/virt/qemu$ virsh version
Compiled against library: libvirt 8.0.0
Using library: libvirt 8.0.0
Using API: QEMU 8.0.0
error: failed to get the hypervisor version
error: internal error: Cannot find suitable emulator for x86_64
I am not sure if it is expected. From my understanding, it may not be
reasonable, because hypervisor could also use kvm or hvf. My first
thought was to add more domain virt type to
'virQEMUCapsGetDefaultVersion', but after looking into
'virCapabilitiesDomainDataLookupInternal', I noticed that it works same
if I set domain virt type to 'NONE', it will iterate all domains to find
a 'emulator' and 'guest' based on 'ostype' and 'arch'.
This is a version
issue so no need to change qemu capabilities cache search logic which I
am not quite familiar with.
Let me know if there are any problems, thanks.
Regards,
Liang
On 4/26/22 16:38, Liang Yan wrote:
We do not need VIR_DOMAIN_VIRT_QEMU to get qemu default
version. With the 'os_type' and 'arch'in capabilities,
we could identify 'emulator' which is enough to get the version.
Actually VIR_DOMAIN_VIRT_QEMU is not the only domain virt type for
qemu driver, there are VIR_DOMAIN_VIRT_KVM and VIR_DOMAIN_VIRT_HVF.
If TCG is disabled in qemu, it will cause the error that could not
find suitable emulater when access version.
Signed-off-by: Liang Yan <lyan(a)digtalocean.com>
---
src/qemu/qemu_capabilities.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
index b91db851bb..9a0b7ebeb4 100644
--- a/src/qemu/qemu_capabilities.c
+++ b/src/qemu/qemu_capabilities.c
@@ -1857,7 +1857,7 @@ int virQEMUCapsGetDefaultVersion(virCaps *caps,
hostarch = virArchFromHost();
if (!(capsdata = virCapabilitiesDomainDataLookup(caps,
- VIR_DOMAIN_OSTYPE_HVM, hostarch, VIR_DOMAIN_VIRT_QEMU,
+ VIR_DOMAIN_OSTYPE_HVM, hostarch, VIR_DOMAIN_VIRT_NONE,
NULL, NULL))) {
virReportError(VIR_ERR_INTERNAL_ERROR,
_("Cannot find suitable emulator for %s"),