From: Andrea Bolognani Date: Fri, 14 Sep 2018 12:36:15 +0000 (+0200) Subject: qemu: Prefer qemu-system-* binaries X-Git-Tag: v4.8.0-rc1~102 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1a3de67001c00b689249b121b4c3413487ae68fe;p=thirdparty%2Flibvirt.git qemu: Prefer qemu-system-* binaries We already prefer them in capabilities, and domcapabilities should be consistent with that. This commit is best viewed with 'git show -w'. Signed-off-by: Andrea Bolognani --- diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index e152868124..29e07d263d 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -583,6 +583,7 @@ struct _virQEMUCaps { struct virQEMUCapsSearchData { virArch arch; + const char *binaryFilter; }; @@ -4743,7 +4744,15 @@ virQEMUCapsCompareArch(const void *payload, struct virQEMUCapsSearchData *data = (struct virQEMUCapsSearchData *)opaque; const virQEMUCaps *qemuCaps = payload; - return qemuCaps->arch == data->arch; + if (qemuCaps->arch != data->arch) + return false; + + if (data->binaryFilter && + !strstr(qemuCaps->binary, data->binaryFilter)) { + return false; + } + + return true; } @@ -4752,20 +4761,28 @@ virQEMUCapsCacheLookupByArch(virFileCachePtr cache, virArch arch) { virQEMUCapsPtr ret = NULL; + const char *binaryFilters[] = { + "qemu-system-", + NULL, + }; virArch archs[] = { arch, virQEMUCapsFindTarget(virArchFromHost(), arch), }; + size_t i; size_t j; - for (j = 0; j < ARRAY_CARDINALITY(archs); j++) { - struct virQEMUCapsSearchData data = { - .arch = archs[j], - }; + for (i = 0; i < ARRAY_CARDINALITY(binaryFilters); i++) { + for (j = 0; j < ARRAY_CARDINALITY(archs); j++) { + struct virQEMUCapsSearchData data = { + .arch = archs[j], + .binaryFilter = binaryFilters[i], + }; - ret = virFileCacheLookupByFunc(cache, virQEMUCapsCompareArch, &data); - if (ret) - goto done; + ret = virFileCacheLookupByFunc(cache, virQEMUCapsCompareArch, &data); + if (ret) + goto done; + } } virReportError(VIR_ERR_INVALID_ARG,