提交 5331c480 编写于 作者: D Daniel P. Berrangé

qemu: fix missing error reports in capabilities probing

The "virsh domcapabilities --arch ppc64" command will fail with no
error message set if qemu-system-ppc64 is not currently installed.

This is because virQEMUCapsCacheLookup() does not report any error
message if not capabilities can be obtained from the cache. Almost
all methods calling this expected an error to be set on failure.

Once that's fixed though, we see a further bug which is that
virQEMUCapsCacheLookupDefault() is passing a NULL binary path to
virQEMUCapsCacheLookup(), so we need to catch that too.
Reviewed-by: NDaniel Henrique Barboza <danielhb413@gmail.com>
Signed-off-by: NDaniel P. Berrangé <berrange@redhat.com>
上级 d0022748
......@@ -5634,6 +5634,11 @@ virQEMUCapsCacheLookup(virFileCachePtr cache,
priv->microcodeVersion = virHostCPUGetMicrocodeVersion();
ret = virFileCacheLookup(cache, binary);
if (!ret) {
virReportError(VIR_ERR_INTERNAL_ERROR,
_("no capabilities available for %s"), binary);
return NULL;
}
VIR_DEBUG("Returning caps %p for %s", ret, binary);
return ret;
......@@ -5780,6 +5785,12 @@ virQEMUCapsCacheLookupDefault(virFileCachePtr cache,
probedbinary = virQEMUCapsGetDefaultEmulator(hostarch, arch);
binary = probedbinary;
}
if (!binary) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("unable to find any emulator to serve '%s' architecture"),
archStr);
return NULL;
}
if (!(qemuCaps = virQEMUCapsCacheLookup(cache, binary)))
return NULL;
......
......@@ -6131,8 +6131,10 @@ qemuDomainPostParseDataAlloc(const virDomainDef *def,
virQEMUDriverPtr driver = opaque;
if (!(*parseOpaque = virQEMUCapsCacheLookup(driver->qemuCapsCache,
def->emulator)))
def->emulator))) {
virResetLastError();
return 1;
}
return 0;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册