diff options
author | cdoern <cbdoer23@g.holycross.edu> | 2022-04-11 22:54:08 -0400 |
---|---|---|
committer | cdoern <cdoern@redhat.com> | 2022-04-18 15:38:24 -0400 |
commit | be0da4a22265ade11c603fb847531a080d844a06 (patch) | |
tree | 3430ac7e1125e02ed6c3413e3f887ac017e874fe /pkg/specgenutil | |
parent | d6f47e692bc694d3ec4f3505acaccf7fa0b73231 (diff) | |
download | podman-be0da4a22265ade11c603fb847531a080d844a06.tar.gz podman-be0da4a22265ade11c603fb847531a080d844a06.tar.bz2 podman-be0da4a22265ade11c603fb847531a080d844a06.zip |
Translate Memory Limit to Swap in API
in specgen, CLI path uses the given memory limit to define the swap value (if not already specified)
add a route to this piece of code from within the api handlers
resolves #13145
Signed-off-by: cdoern <cdoern@redhat.com>
Diffstat (limited to 'pkg/specgenutil')
-rw-r--r-- | pkg/specgenutil/specgen.go | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/pkg/specgenutil/specgen.go b/pkg/specgenutil/specgen.go index c86af7295..00de99817 100644 --- a/pkg/specgenutil/specgen.go +++ b/pkg/specgenutil/specgen.go @@ -126,6 +126,16 @@ func getIOLimits(s *specgen.SpecGenerator, c *entities.ContainerCreateOptions) ( return io, nil } +func LimitToSwap(memory *specs.LinuxMemory, swap string, ml int64) { + if ml > 0 { + memory.Limit = &ml + if swap == "" { + limit := 2 * ml + memory.Swap = &(limit) + } + } +} + func getMemoryLimits(s *specgen.SpecGenerator, c *entities.ContainerCreateOptions) (*specs.LinuxMemory, error) { var err error memory := &specs.LinuxMemory{} @@ -135,14 +145,8 @@ func getMemoryLimits(s *specgen.SpecGenerator, c *entities.ContainerCreateOption if err != nil { return nil, errors.Wrapf(err, "invalid value for memory") } - if ml > 0 { - memory.Limit = &ml - if c.MemorySwap == "" { - limit := 2 * ml - memory.Swap = &(limit) - } - hasLimits = true - } + LimitToSwap(memory, c.MemorySwap, ml) + hasLimits = true } if m := c.MemoryReservation; len(m) > 0 { mr, err := units.RAMInBytes(m) |