summaryrefslogtreecommitdiff
path: root/pkg
diff options
context:
space:
mode:
authorHironori Shiina <shiina.hironori@jp.fujitsu.com>2021-11-11 11:27:05 -0500
committerHironori Shiina <shiina.hironori@jp.fujitsu.com>2021-11-12 13:20:20 -0500
commit9226ccb59f5967f5c784280b993711530615dcd7 (patch)
treeb706751e55c134039957a3a94f707cfb8feab6da /pkg
parent0aecacb8655d65cb55ec09a9629a358236e6af73 (diff)
downloadpodman-9226ccb59f5967f5c784280b993711530615dcd7.tar.gz
podman-9226ccb59f5967f5c784280b993711530615dcd7.tar.bz2
podman-9226ccb59f5967f5c784280b993711530615dcd7.zip
Enable 'podman run --memory-swappiness=0'
'--memory-swappiness=0' used to work. This patch fixes the regression issue, which was caused by the change of infra container creation process. Signed-off-by: Hironori Shiina <shiina.hironori@jp.fujitsu.com>
Diffstat (limited to 'pkg')
-rw-r--r--pkg/api/handlers/libpod/pods.go6
-rw-r--r--pkg/domain/entities/pods.go9
-rw-r--r--pkg/domain/infra/abi/play.go2
-rw-r--r--pkg/specgenutil/specgen.go2
4 files changed, 15 insertions, 4 deletions
diff --git a/pkg/api/handlers/libpod/pods.go b/pkg/api/handlers/libpod/pods.go
index 2ba292579..3d18406a5 100644
--- a/pkg/api/handlers/libpod/pods.go
+++ b/pkg/api/handlers/libpod/pods.go
@@ -39,8 +39,10 @@ func PodCreate(w http.ResponseWriter, r *http.Request) {
return
}
if !psg.NoInfra {
- infraOptions := &entities.ContainerCreateOptions{ImageVolume: "bind", IsInfra: true, Net: &entities.NetOptions{}, Devices: psg.Devices} // options for pulling the image and FillOutSpec
- err = specgenutil.FillOutSpecGen(psg.InfraContainerSpec, infraOptions, []string{}) // necessary for default values in many cases (userns, idmappings)
+ infraOptions := entities.NewInfraContainerCreateOptions() // options for pulling the image and FillOutSpec
+ infraOptions.Net = &entities.NetOptions{}
+ infraOptions.Devices = psg.Devices
+ err = specgenutil.FillOutSpecGen(psg.InfraContainerSpec, &infraOptions, []string{}) // necessary for default values in many cases (userns, idmappings)
if err != nil {
utils.Error(w, "Something went wrong.", http.StatusInternalServerError, errors.Wrap(err, "error filling out specgen"))
return
diff --git a/pkg/domain/entities/pods.go b/pkg/domain/entities/pods.go
index 1df18be58..70d2be1e6 100644
--- a/pkg/domain/entities/pods.go
+++ b/pkg/domain/entities/pods.go
@@ -266,6 +266,15 @@ type ContainerCreateOptions struct {
CgroupConf []string
}
+func NewInfraContainerCreateOptions() ContainerCreateOptions {
+ options := ContainerCreateOptions{
+ IsInfra: true,
+ ImageVolume: "bind",
+ MemorySwappiness: -1,
+ }
+ return options
+}
+
type PodCreateReport struct {
Id string //nolint
}
diff --git a/pkg/domain/infra/abi/play.go b/pkg/domain/infra/abi/play.go
index 3fdb3f286..d2bb95f7c 100644
--- a/pkg/domain/infra/abi/play.go
+++ b/pkg/domain/infra/abi/play.go
@@ -270,7 +270,7 @@ func (ic *ContainerEngine) playKubePod(ctx context.Context, podName string, podY
if podOpt.Infra {
infraImage := util.DefaultContainerConfig().Engine.InfraImage
- infraOptions := entities.ContainerCreateOptions{ImageVolume: "bind"}
+ infraOptions := entities.NewInfraContainerCreateOptions()
podSpec.PodSpecGen.InfraImage = infraImage
podSpec.PodSpecGen.NoInfra = false
podSpec.PodSpecGen.InfraContainerSpec = specgen.NewSpecGenerator(infraImage, false)
diff --git a/pkg/specgenutil/specgen.go b/pkg/specgenutil/specgen.go
index 4e8f954fb..04d3add32 100644
--- a/pkg/specgenutil/specgen.go
+++ b/pkg/specgenutil/specgen.go
@@ -172,7 +172,7 @@ func getMemoryLimits(s *specgen.SpecGenerator, c *entities.ContainerCreateOption
memory.Kernel = &mk
hasLimits = true
}
- if c.MemorySwappiness > 0 {
+ if c.MemorySwappiness >= 0 {
swappiness := uint64(c.MemorySwappiness)
memory.Swappiness = &swappiness
hasLimits = true