|
|
9119d9 |
From 63a1376f7f4e6e2811d3eb15f6e969dc1576d4cb Mon Sep 17 00:00:00 2001
|
|
|
9119d9 |
Message-Id: <63a1376f7f4e6e2811d3eb15f6e969dc1576d4cb@dist-git>
|
|
|
9119d9 |
From: Roman Bogorodskiy <bogorodskiy@gmail.com>
|
|
|
9119d9 |
Date: Wed, 19 Nov 2014 18:59:13 +0100
|
|
|
9119d9 |
Subject: [PATCH] Fix build in qemu_capabilities
|
|
|
9119d9 |
|
|
|
9119d9 |
https://bugzilla.redhat.com/show_bug.cgi?id=1165782
|
|
|
9119d9 |
|
|
|
9119d9 |
Commit f05b6a91 added virQEMUDriverConfigPtr argument to the
|
|
|
9119d9 |
virQEMUCapsFillDomainCaps function and it uses forward declaration
|
|
|
9119d9 |
of virQEMUDriverConfig and virQEMUDriverConfigPtr that casues clang
|
|
|
9119d9 |
build to fail:
|
|
|
9119d9 |
|
|
|
9119d9 |
gmake[3]: Entering directory `/usr/home/novel/code/libvirt/src'
|
|
|
9119d9 |
CC qemu/libvirt_driver_qemu_impl_la-qemu_capabilities.lo
|
|
|
9119d9 |
In file included from qemu/qemu_capabilities.c:43:
|
|
|
9119d9 |
In file included from qemu/qemu_hostdev.h:27:
|
|
|
9119d9 |
qemu/qemu_conf.h:63:37: error: redefinition of typedef 'virQEMUDriverConfig'
|
|
|
9119d9 |
is a C11 feature [-Werror,-Wtypedef-redefinition]
|
|
|
9119d9 |
typedef struct _virQEMUDriverConfig virQEMUDriverConfig;
|
|
|
9119d9 |
^
|
|
|
9119d9 |
qemu/qemu_capabilities.h:328:37: note: previous definition is here
|
|
|
9119d9 |
typedef struct _virQEMUDriverConfig virQEMUDriverConfig;
|
|
|
9119d9 |
^
|
|
|
9119d9 |
|
|
|
9119d9 |
Fix that by passing loader and nloader config attributes directly
|
|
|
9119d9 |
instead of passing complete config.
|
|
|
9119d9 |
|
|
|
9119d9 |
(cherry picked from commit 3b3947ea3740d0713f04dcf178a08945b544ce47)
|
|
|
9119d9 |
|
|
|
9119d9 |
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
|
|
|
9119d9 |
---
|
|
|
9119d9 |
src/qemu/qemu_capabilities.c | 37 +++++++++++++++++++++----------------
|
|
|
9119d9 |
src/qemu/qemu_capabilities.h | 7 ++-----
|
|
|
9119d9 |
src/qemu/qemu_driver.c | 3 ++-
|
|
|
9119d9 |
tests/domaincapstest.c | 3 ++-
|
|
|
9119d9 |
4 files changed, 27 insertions(+), 23 deletions(-)
|
|
|
9119d9 |
|
|
|
9119d9 |
diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
|
|
|
9119d9 |
index 683b882..a10bc8c 100644
|
|
|
9119d9 |
--- a/src/qemu/qemu_capabilities.c
|
|
|
9119d9 |
+++ b/src/qemu/qemu_capabilities.c
|
|
|
9119d9 |
@@ -3615,43 +3615,44 @@ virQEMUCapsGetDefaultMachine(virQEMUCapsPtr qemuCaps)
|
|
|
9119d9 |
|
|
|
9119d9 |
static int
|
|
|
9119d9 |
virQEMUCapsFillDomainLoaderCaps(virQEMUCapsPtr qemuCaps,
|
|
|
9119d9 |
- virDomainCapsLoaderPtr loader,
|
|
|
9119d9 |
+ virDomainCapsLoaderPtr capsLoader,
|
|
|
9119d9 |
virArch arch,
|
|
|
9119d9 |
- virQEMUDriverConfigPtr cfg)
|
|
|
9119d9 |
+ char **loader,
|
|
|
9119d9 |
+ size_t nloader)
|
|
|
9119d9 |
{
|
|
|
9119d9 |
size_t i;
|
|
|
9119d9 |
|
|
|
9119d9 |
- loader->device.supported = true;
|
|
|
9119d9 |
+ capsLoader->device.supported = true;
|
|
|
9119d9 |
|
|
|
9119d9 |
- if (VIR_ALLOC_N(loader->values.values, cfg->nloader) < 0)
|
|
|
9119d9 |
+ if (VIR_ALLOC_N(capsLoader->values.values, nloader) < 0)
|
|
|
9119d9 |
return -1;
|
|
|
9119d9 |
|
|
|
9119d9 |
- for (i = 0; i < cfg->nloader; i++) {
|
|
|
9119d9 |
- const char *filename = cfg->loader[i];
|
|
|
9119d9 |
+ for (i = 0; i < nloader; i++) {
|
|
|
9119d9 |
+ const char *filename = loader[i];
|
|
|
9119d9 |
|
|
|
9119d9 |
if (!virFileExists(filename)) {
|
|
|
9119d9 |
VIR_DEBUG("loader filename=%s does not exist", filename);
|
|
|
9119d9 |
continue;
|
|
|
9119d9 |
}
|
|
|
9119d9 |
|
|
|
9119d9 |
- if (VIR_STRDUP(loader->values.values[loader->values.nvalues],
|
|
|
9119d9 |
+ if (VIR_STRDUP(capsLoader->values.values[capsLoader->values.nvalues],
|
|
|
9119d9 |
filename) < 0)
|
|
|
9119d9 |
return -1;
|
|
|
9119d9 |
- loader->values.nvalues++;
|
|
|
9119d9 |
+ capsLoader->values.nvalues++;
|
|
|
9119d9 |
}
|
|
|
9119d9 |
|
|
|
9119d9 |
- VIR_DOMAIN_CAPS_ENUM_SET(loader->type,
|
|
|
9119d9 |
+ VIR_DOMAIN_CAPS_ENUM_SET(capsLoader->type,
|
|
|
9119d9 |
VIR_DOMAIN_LOADER_TYPE_ROM);
|
|
|
9119d9 |
|
|
|
9119d9 |
if (arch == VIR_ARCH_X86_64 &&
|
|
|
9119d9 |
virQEMUCapsGet(qemuCaps, QEMU_CAPS_DRIVE) &&
|
|
|
9119d9 |
virQEMUCapsGet(qemuCaps, QEMU_CAPS_DRIVE_FORMAT))
|
|
|
9119d9 |
- VIR_DOMAIN_CAPS_ENUM_SET(loader->type,
|
|
|
9119d9 |
+ VIR_DOMAIN_CAPS_ENUM_SET(capsLoader->type,
|
|
|
9119d9 |
VIR_DOMAIN_LOADER_TYPE_PFLASH);
|
|
|
9119d9 |
|
|
|
9119d9 |
|
|
|
9119d9 |
if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_DRIVE_READONLY))
|
|
|
9119d9 |
- VIR_DOMAIN_CAPS_ENUM_SET(loader->readonly,
|
|
|
9119d9 |
+ VIR_DOMAIN_CAPS_ENUM_SET(capsLoader->readonly,
|
|
|
9119d9 |
VIR_TRISTATE_BOOL_YES,
|
|
|
9119d9 |
VIR_TRISTATE_BOOL_NO);
|
|
|
9119d9 |
return 0;
|
|
|
9119d9 |
@@ -3662,12 +3663,14 @@ static int
|
|
|
9119d9 |
virQEMUCapsFillDomainOSCaps(virQEMUCapsPtr qemuCaps,
|
|
|
9119d9 |
virDomainCapsOSPtr os,
|
|
|
9119d9 |
virArch arch,
|
|
|
9119d9 |
- virQEMUDriverConfigPtr cfg)
|
|
|
9119d9 |
+ char **loader,
|
|
|
9119d9 |
+ size_t nloader)
|
|
|
9119d9 |
{
|
|
|
9119d9 |
- virDomainCapsLoaderPtr loader = &os->loader;
|
|
|
9119d9 |
+ virDomainCapsLoaderPtr capsLoader = &os->loader;
|
|
|
9119d9 |
|
|
|
9119d9 |
os->device.supported = true;
|
|
|
9119d9 |
- if (virQEMUCapsFillDomainLoaderCaps(qemuCaps, loader, arch, cfg) < 0)
|
|
|
9119d9 |
+ if (virQEMUCapsFillDomainLoaderCaps(qemuCaps, capsLoader, arch,
|
|
|
9119d9 |
+ loader, nloader) < 0)
|
|
|
9119d9 |
return -1;
|
|
|
9119d9 |
return 0;
|
|
|
9119d9 |
}
|
|
|
9119d9 |
@@ -3752,7 +3755,8 @@ virQEMUCapsFillDomainDeviceHostdevCaps(virQEMUCapsPtr qemuCaps,
|
|
|
9119d9 |
int
|
|
|
9119d9 |
virQEMUCapsFillDomainCaps(virDomainCapsPtr domCaps,
|
|
|
9119d9 |
virQEMUCapsPtr qemuCaps,
|
|
|
9119d9 |
- virQEMUDriverConfigPtr cfg)
|
|
|
9119d9 |
+ char **loader,
|
|
|
9119d9 |
+ size_t nloader)
|
|
|
9119d9 |
{
|
|
|
9119d9 |
virDomainCapsOSPtr os = &domCaps->os;
|
|
|
9119d9 |
virDomainCapsDeviceDiskPtr disk = &domCaps->disk;
|
|
|
9119d9 |
@@ -3761,7 +3765,8 @@ virQEMUCapsFillDomainCaps(virDomainCapsPtr domCaps,
|
|
|
9119d9 |
|
|
|
9119d9 |
domCaps->maxvcpus = maxvcpus;
|
|
|
9119d9 |
|
|
|
9119d9 |
- if (virQEMUCapsFillDomainOSCaps(qemuCaps, os, domCaps->arch, cfg) < 0 ||
|
|
|
9119d9 |
+ if (virQEMUCapsFillDomainOSCaps(qemuCaps, os, domCaps->arch,
|
|
|
9119d9 |
+ loader, nloader) < 0 ||
|
|
|
9119d9 |
virQEMUCapsFillDomainDeviceDiskCaps(qemuCaps, disk) < 0 ||
|
|
|
9119d9 |
virQEMUCapsFillDomainDeviceHostdevCaps(qemuCaps, hostdev) < 0)
|
|
|
9119d9 |
return -1;
|
|
|
9119d9 |
diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h
|
|
|
9119d9 |
index 08c531d..c0e2172 100644
|
|
|
9119d9 |
--- a/src/qemu/qemu_capabilities.h
|
|
|
9119d9 |
+++ b/src/qemu/qemu_capabilities.h
|
|
|
9119d9 |
@@ -326,12 +326,9 @@ int virQEMUCapsInitGuestFromBinary(virCapsPtr caps,
|
|
|
9119d9 |
virQEMUCapsPtr kvmbinCaps,
|
|
|
9119d9 |
virArch guestarch);
|
|
|
9119d9 |
|
|
|
9119d9 |
-/* Forward declaration */
|
|
|
9119d9 |
-typedef struct _virQEMUDriverConfig virQEMUDriverConfig;
|
|
|
9119d9 |
-typedef virQEMUDriverConfig *virQEMUDriverConfigPtr;
|
|
|
9119d9 |
-
|
|
|
9119d9 |
int virQEMUCapsFillDomainCaps(virDomainCapsPtr domCaps,
|
|
|
9119d9 |
virQEMUCapsPtr qemuCaps,
|
|
|
9119d9 |
- virQEMUDriverConfigPtr cfg);
|
|
|
9119d9 |
+ char **loader,
|
|
|
9119d9 |
+ size_t nloader);
|
|
|
9119d9 |
|
|
|
9119d9 |
#endif /* __QEMU_CAPABILITIES_H__*/
|
|
|
9119d9 |
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
|
|
|
9119d9 |
index ea45d89..8e6ef1e 100644
|
|
|
9119d9 |
--- a/src/qemu/qemu_driver.c
|
|
|
9119d9 |
+++ b/src/qemu/qemu_driver.c
|
|
|
9119d9 |
@@ -17668,7 +17668,8 @@ qemuConnectGetDomainCapabilities(virConnectPtr conn,
|
|
|
9119d9 |
if (!(domCaps = virDomainCapsNew(emulatorbin, machine, arch, virttype)))
|
|
|
9119d9 |
goto cleanup;
|
|
|
9119d9 |
|
|
|
9119d9 |
- if (virQEMUCapsFillDomainCaps(domCaps, qemuCaps, cfg) < 0)
|
|
|
9119d9 |
+ if (virQEMUCapsFillDomainCaps(domCaps, qemuCaps,
|
|
|
9119d9 |
+ cfg->loader, cfg->nloader) < 0)
|
|
|
9119d9 |
goto cleanup;
|
|
|
9119d9 |
|
|
|
9119d9 |
ret = virDomainCapsFormat(domCaps);
|
|
|
9119d9 |
diff --git a/tests/domaincapstest.c b/tests/domaincapstest.c
|
|
|
9119d9 |
index 067ad4d..70d2ef3 100644
|
|
|
9119d9 |
--- a/tests/domaincapstest.c
|
|
|
9119d9 |
+++ b/tests/domaincapstest.c
|
|
|
9119d9 |
@@ -106,7 +106,8 @@ fillQemuCaps(virDomainCapsPtr domCaps,
|
|
|
9119d9 |
virQEMUCapsPtr qemuCaps = data->qemuCaps;
|
|
|
9119d9 |
virQEMUDriverConfigPtr cfg = data->cfg;
|
|
|
9119d9 |
|
|
|
9119d9 |
- if (virQEMUCapsFillDomainCaps(domCaps, qemuCaps, cfg) < 0)
|
|
|
9119d9 |
+ if (virQEMUCapsFillDomainCaps(domCaps, qemuCaps,
|
|
|
9119d9 |
+ cfg->loader, cfg->nloader) < 0)
|
|
|
9119d9 |
return -1;
|
|
|
9119d9 |
|
|
|
9119d9 |
/* The function above tries to query host's KVM & VFIO capabilities by
|
|
|
9119d9 |
--
|
|
|
9119d9 |
2.1.3
|
|
|
9119d9 |
|