Browse code

Change OomKillDisable to be pointer

It's like `MemorySwappiness`, the default value has specific
meaning (default false means enable oom kill).

We need to change it to pointer so we can update it after
container is created.

Signed-off-by: Qiang Huang <h.huangqiang@huawei.com>
(cherry picked from commit 9c2ea42329179c589f5a8991ccf0253eb10fc897)

Conflicts:
vendor/src/github.com/docker/engine-api/types/container/host_config.go

Qiang Huang authored on 2015/12/31 15:17:18
Showing 4 changed files
... ...
@@ -90,7 +90,7 @@ func (cli *DockerCli) CmdRun(args ...string) error {
90 90
 		os.Exit(125)
91 91
 	}
92 92
 
93
-	if hostConfig.OomKillDisable && hostConfig.Memory == 0 {
93
+	if hostConfig.OomKillDisable != nil && *hostConfig.OomKillDisable && hostConfig.Memory == 0 {
94 94
 		fmt.Fprintf(cli.err, "WARNING: Dangerous only disable the OOM Killer on containers but not set the '-m/--memory' option\n")
95 95
 	}
96 96
 
... ...
@@ -209,7 +209,7 @@ func (daemon *Daemon) populateCommand(c *container.Container, env []string) erro
209 209
 		BlkioThrottleWriteBpsDevice:  writeBpsDevice,
210 210
 		BlkioThrottleReadIOpsDevice:  readIOpsDevice,
211 211
 		BlkioThrottleWriteIOpsDevice: writeIOpsDevice,
212
-		OomKillDisable:               c.HostConfig.OomKillDisable,
212
+		OomKillDisable:               *c.HostConfig.OomKillDisable,
213 213
 		MemorySwappiness:             -1,
214 214
 	}
215 215
 
... ...
@@ -210,6 +210,10 @@ func (daemon *Daemon) adaptContainerSettings(hostConfig *containertypes.HostConf
210 210
 		defaultSwappiness := int64(-1)
211 211
 		hostConfig.MemorySwappiness = &defaultSwappiness
212 212
 	}
213
+	if hostConfig.OomKillDisable == nil {
214
+		defaultOomKillDisable := false
215
+		hostConfig.OomKillDisable = &defaultOomKillDisable
216
+	}
213 217
 
214 218
 	return nil
215 219
 }
... ...
@@ -270,8 +274,8 @@ func verifyContainerResources(resources *containertypes.Resources) ([]string, er
270 270
 		warnings = append(warnings, "You specified a kernel memory limit on a kernel older than 4.0. Kernel memory limits are experimental on older kernels, it won't work as expected and can cause your system to be unstable.")
271 271
 		logrus.Warnf("You specified a kernel memory limit on a kernel older than 4.0. Kernel memory limits are experimental on older kernels, it won't work as expected and can cause your system to be unstable.")
272 272
 	}
273
-	if resources.OomKillDisable && !sysInfo.OomKillDisable {
274
-		resources.OomKillDisable = false
273
+	if resources.OomKillDisable != nil && !sysInfo.OomKillDisable {
274
+		resources.OomKillDisable = nil
275 275
 		return warnings, fmt.Errorf("Your kernel does not support oom kill disable.")
276 276
 	}
277 277
 
... ...
@@ -327,7 +327,7 @@ func Parse(cmd *flag.FlagSet, args []string) (*container.Config, *container.Host
327 327
 		MemorySwap:           memorySwap,
328 328
 		MemorySwappiness:     flSwappiness,
329 329
 		KernelMemory:         KernelMemory,
330
-		OomKillDisable:       *flOomKillDisable,
330
+		OomKillDisable:       flOomKillDisable,
331 331
 		CPUShares:            *flCPUShares,
332 332
 		CPUPeriod:            *flCPUPeriod,
333 333
 		CpusetCpus:           *flCpusetCpus,