[libvirt] [PATCH 2/2] conf: Move hypervisor specific nhugepage checks

Marc-André Lureau marcandre.lureau at gmail.com
Wed Sep 12 13:09:45 UTC 2018


Hi
On Tue, Sep 11, 2018 at 5:36 PM John Ferlan <jferlan at redhat.com> wrote:
>
> Commit 82327038 moved a couple of checks out of the XML parser
> into the domain validation; however, those checks seem to be more
> useful as hypervisor specific checks rather than the more general
> domain conf checks (nothing in the docs indicate a specific error).
>
> Fortunately only QEMU was processing the memoryBacking, thus
> add the changes to qemuDomainDefValidateMemory and change the
> code a bit to make usage of the similar deref to def->mem and
> the mem->nhugepages filter.
>
> Signed-off-by: John Ferlan <jferlan at redhat.com>

Reviewed-by: Marc-André Lureau <marcandre.lureau at redhat.com>

> ---
>  src/conf/domain_conf.c | 14 --------------
>  src/qemu/qemu_domain.c | 27 ++++++++++++++++++++++-----
>  2 files changed, 22 insertions(+), 19 deletions(-)
>
> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index 7e14cea128..cbc3497c47 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c
> @@ -6182,20 +6182,6 @@ virDomainDefMemtuneValidate(const virDomainDef *def)
>      if (mem->nhugepages == 0)
>          return 0;

That check could be removed now.

>
> -    if (mem->allocation == VIR_DOMAIN_MEMORY_ALLOCATION_ONDEMAND) {
> -        virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
> -                       _("hugepages are not allowed with memory "
> -                         "allocation ondemand"));
> -        return -1;
> -    }
> -
> -    if (mem->source == VIR_DOMAIN_MEMORY_SOURCE_ANONYMOUS) {
> -        virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
> -                       _("hugepages are not allowed with anonymous "
> -                         "memory source"));
> -        return -1;
> -    }
> -
>      for (i = 0; i < mem->nhugepages; i++) {
>          size_t j;
>          ssize_t nextBit;
> diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
> index 5329899b13..30fd21dcdf 100644
> --- a/src/qemu/qemu_domain.c
> +++ b/src/qemu/qemu_domain.c
> @@ -3953,18 +3953,35 @@ static int
>  qemuDomainDefValidateMemory(const virDomainDef *def)
>  {
>      const long system_page_size = virGetSystemPageSizeKB();
> +    const virDomainMemtune *mem = &(def->mem);
> +

extra parenthesis?

> +    if (mem->nhugepages == 0)
> +        return 0;
> +
> +    if (mem->allocation == VIR_DOMAIN_MEMORY_ALLOCATION_ONDEMAND) {
> +        virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
> +                       _("hugepages are not allowed with memory "
> +                         "allocation ondemand"));
> +        return -1;
> +    }
> +
> +    if (mem->source == VIR_DOMAIN_MEMORY_SOURCE_ANONYMOUS) {
> +        virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
> +                       _("hugepages are not allowed with anonymous "
> +                         "memory source"));
> +        return -1;
> +    }
>
>      /* We can't guarantee any other mem.access
>       * if no guest NUMA nodes are defined. */
> -    if (def->mem.nhugepages != 0 &&
> -        def->mem.hugepages[0].size != system_page_size &&
> +    if (mem->hugepages[0].size != system_page_size &&
>          virDomainNumaGetNodeCount(def->numa) == 0 &&
> -        def->mem.access != VIR_DOMAIN_MEMORY_ACCESS_DEFAULT &&
> -        def->mem.access != VIR_DOMAIN_MEMORY_ACCESS_PRIVATE) {
> +        mem->access != VIR_DOMAIN_MEMORY_ACCESS_DEFAULT &&
> +        mem->access != VIR_DOMAIN_MEMORY_ACCESS_PRIVATE) {
>          virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
>                         _("memory access mode '%s' not supported "
>                           "without guest numa node"),
> -                       virDomainMemoryAccessTypeToString(def->mem.access));
> +                       virDomainMemoryAccessTypeToString(mem->access));
>          return -1;
>      }
>
> --

looks good otherwise
Reviewed-by: Marc-André Lureau <marcandre.lureau at redhat.com>

> 2.17.1
>
> --
> libvir-list mailing list
> libvir-list at redhat.com
> https://www.redhat.com/mailman/listinfo/libvir-list



-- 
Marc-André Lureau




More information about the libvir-list mailing list