[libvirt] [PATCH 02/23] conf: Add usability blockers to virDomainCapsCPUModel
John Ferlan
jferlan at redhat.com
Thu Oct 12 11:23:25 UTC 2017
On 10/04/2017 10:58 AM, Jiri Denemark wrote:
> When a hypervisor marks a CPU model as unusable on the current host, it
> may also give us a list of features which prevent the model from being
> usable. Storing this list in virDomainCapsCPUModel will help the CPU
> driver with creating a host-model CPU configuration.
>
> Signed-off-by: Jiri Denemark <jdenemar at redhat.com>
> ---
> src/conf/domain_capabilities.c | 30 ++++++++++++++++++++++--------
> src/conf/domain_capabilities.h | 7 +++++--
> src/qemu/qemu_capabilities.c | 11 ++++++-----
> tests/domaincapstest.c | 6 +++---
> 4 files changed, 36 insertions(+), 18 deletions(-)
>
> diff --git a/src/conf/domain_capabilities.c b/src/conf/domain_capabilities.c
> index f62038b96c..be34576204 100644
> --- a/src/conf/domain_capabilities.c
> +++ b/src/conf/domain_capabilities.c
> @@ -163,7 +163,8 @@ virDomainCapsCPUModelsCopy(virDomainCapsCPUModelsPtr old)
> for (i = 0; i < old->nmodels; i++) {
> if (virDomainCapsCPUModelsAdd(cpuModels,
> old->models[i].name, -1,
> - old->models[i].usable) < 0)
> + old->models[i].usable,
> + old->models[i].blockers) < 0)
> goto error;
> }
>
> @@ -195,7 +196,8 @@ virDomainCapsCPUModelsFilter(virDomainCapsCPUModelsPtr old,
>
> if (virDomainCapsCPUModelsAdd(cpuModels,
> old->models[i].name, -1,
> - old->models[i].usable) < 0)
> + old->models[i].usable,
> + old->models[i].blockers) < 0)
> goto error;
> }
>
> @@ -210,7 +212,8 @@ virDomainCapsCPUModelsFilter(virDomainCapsCPUModelsPtr old,
> int
> virDomainCapsCPUModelsAddSteal(virDomainCapsCPUModelsPtr cpuModels,
> char **name,
> - virDomainCapsCPUUsable usable)
> + virDomainCapsCPUUsable usable,
> + char ***blockers)
> {
> if (VIR_RESIZE_N(cpuModels->models, cpuModels->nmodels_max,
> cpuModels->nmodels, 1) < 0)
> @@ -218,6 +221,10 @@ virDomainCapsCPUModelsAddSteal(virDomainCapsCPUModelsPtr cpuModels,
>
> cpuModels->models[cpuModels->nmodels].usable = usable;
> VIR_STEAL_PTR(cpuModels->models[cpuModels->nmodels].name, *name);
> +
> + if (blockers)
> + VIR_STEAL_PTR(cpuModels->models[cpuModels->nmodels].blockers, *blockers);
> +
So @name is required and @blockers can be NULL/optional... Hopefully no
one ever gets confused.
> cpuModels->nmodels++;
> return 0;
> }
> @@ -227,20 +234,27 @@ int
> virDomainCapsCPUModelsAdd(virDomainCapsCPUModelsPtr cpuModels,
> const char *name,
> ssize_t nameLen,
> - virDomainCapsCPUUsable usable)
> + virDomainCapsCPUUsable usable,
> + char **blockers)
> {
> - char *copy = NULL;
> + char *nameCopy = NULL;
> + char **blockersCopy = NULL;
>
> - if (VIR_STRNDUP(copy, name, nameLen) < 0)
> + if (VIR_STRNDUP(nameCopy, name, nameLen) < 0)
> goto error;
>
> - if (virDomainCapsCPUModelsAddSteal(cpuModels, ©, usable) < 0)
> + if (virStringListCopy(&blockersCopy, (const char **)blockers) < 0)
Obviously based on patch 1 comment, this would change slightly...
Reviewed-by: John Ferlan <jferlan at redhat.com>
John
[...]
More information about the libvir-list
mailing list