[libvirt] [PATCH 29/47] vircgroup: extract virCgroupV1SetMemory

Fabiano Fidêncio fidencio at redhat.com
Thu Sep 20 06:30:29 UTC 2018


On Tue, Sep 18, 2018 at 5:45 PM, Pavel Hrdina <phrdina at redhat.com> wrote:

> Signed-off-by: Pavel Hrdina <phrdina at redhat.com>
>

Reviewed-by: Fabiano Fidêncio <fidencio at redhat.com>


> ---
>  src/util/vircgroup.c        | 20 +-------------------
>  src/util/vircgroupbackend.h |  6 ++++++
>  src/util/vircgroupv1.c      | 28 ++++++++++++++++++++++++++++
>  3 files changed, 35 insertions(+), 19 deletions(-)
>
> diff --git a/src/util/vircgroup.c b/src/util/vircgroup.c
> index ab50342dbb..b1c1bc9cf0 100644
> --- a/src/util/vircgroup.c
> +++ b/src/util/vircgroup.c
> @@ -1595,25 +1595,7 @@ virCgroupGetMemoryUnlimitedKB(void)
>  int
>  virCgroupSetMemory(virCgroupPtr group, unsigned long long kb)
>  {
> -    unsigned long long maxkb = VIR_DOMAIN_MEMORY_PARAM_UNLIMITED;
> -
> -    if (kb > maxkb) {
> -        virReportError(VIR_ERR_INVALID_ARG,
> -                       _("Memory '%llu' must be less than %llu"),
> -                       kb, maxkb);
> -        return -1;
> -    }
> -
> -    if (kb == maxkb)
> -        return virCgroupSetValueI64(group,
> -                                    VIR_CGROUP_CONTROLLER_MEMORY,
> -                                    "memory.limit_in_bytes",
> -                                    -1);
> -    else
> -        return virCgroupSetValueU64(group,
> -                                    VIR_CGROUP_CONTROLLER_MEMORY,
> -                                    "memory.limit_in_bytes",
> -                                    kb << 10);
> +    VIR_CGROUP_BACKEND_CALL(group, setMemory, -1, kb);
>  }
>
>
> diff --git a/src/util/vircgroupbackend.h b/src/util/vircgroupbackend.h
> index b59462d6ab..2d59e4af20 100644
> --- a/src/util/vircgroupbackend.h
> +++ b/src/util/vircgroupbackend.h
> @@ -202,6 +202,10 @@ typedef int
>                                       const char *path,
>                                       unsigned long long *wbps);
>
> +typedef int
> +(*virCgroupSetMemoryCB)(virCgroupPtr group,
> +                        unsigned long long kb);
> +
>  struct _virCgroupBackend {
>      virCgroupBackendType type;
>
> @@ -240,6 +244,8 @@ struct _virCgroupBackend {
>      virCgroupGetBlkioDeviceReadBpsCB getBlkioDeviceReadBps;
>      virCgroupSetBlkioDeviceWriteBpsCB setBlkioDeviceWriteBps;
>      virCgroupGetBlkioDeviceWriteBpsCB getBlkioDeviceWriteBps;
> +
> +    virCgroupSetMemoryCB setMemory;
>  };
>  typedef struct _virCgroupBackend virCgroupBackend;
>  typedef virCgroupBackend *virCgroupBackendPtr;
> diff --git a/src/util/vircgroupv1.c b/src/util/vircgroupv1.c
> index 4f6d20e31f..3235ef3d2d 100644
> --- a/src/util/vircgroupv1.c
> +++ b/src/util/vircgroupv1.c
> @@ -1377,6 +1377,32 @@ virCgroupV1GetBlkioDeviceWriteBps(virCgroupPtr
> group,
>  }
>
>
> +static int
> +virCgroupV1SetMemory(virCgroupPtr group,
> +                     unsigned long long kb)
> +{
> +    unsigned long long maxkb = VIR_DOMAIN_MEMORY_PARAM_UNLIMITED;
> +
> +    if (kb > maxkb) {
> +        virReportError(VIR_ERR_INVALID_ARG,
> +                       _("Memory '%llu' must be less than %llu"),
> +                       kb, maxkb);
> +        return -1;
> +    }
> +
> +    if (kb == maxkb)
> +        return virCgroupSetValueI64(group,
> +                                    VIR_CGROUP_CONTROLLER_MEMORY,
> +                                    "memory.limit_in_bytes",
> +                                    -1);
> +    else
> +        return virCgroupSetValueU64(group,
> +                                    VIR_CGROUP_CONTROLLER_MEMORY,
> +                                    "memory.limit_in_bytes",
> +                                    kb << 10);
> +}
> +
> +
>  virCgroupBackend virCgroupV1Backend = {
>      .type = VIR_CGROUP_BACKEND_TYPE_V1,
>
> @@ -1413,6 +1439,8 @@ virCgroupBackend virCgroupV1Backend = {
>      .getBlkioDeviceReadBps = virCgroupV1GetBlkioDeviceReadBps,
>      .setBlkioDeviceWriteBps = virCgroupV1SetBlkioDeviceWriteBps,
>      .getBlkioDeviceWriteBps = virCgroupV1GetBlkioDeviceWriteBps,
> +
> +    .setMemory = virCgroupV1SetMemory,
>  };
>
>
> --
> 2.17.1
>
> --
> libvir-list mailing list
> libvir-list at redhat.com
> https://www.redhat.com/mailman/listinfo/libvir-list
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20180920/e094cc39/attachment-0001.htm>


More information about the libvir-list mailing list