diff --git a/runtime.go b/runtime.go index 8148db04a4..6e03226b36 100644 --- a/runtime.go +++ b/runtime.go @@ -354,6 +354,27 @@ func (runtime *Runtime) restore() error { return nil } +func (runtime *Runtime) UpdateCapabilities(quiet bool) { + if cgroupMemoryMountpoint, err := FindCgroupMountpoint("memory"); err != nil { + if !quiet { + log.Printf("WARNING: %s\n", err) + } + } else { + _, err1 := ioutil.ReadFile(path.Join(cgroupMemoryMountpoint, "memory.limit_in_bytes")) + _, err2 := ioutil.ReadFile(path.Join(cgroupMemoryMountpoint, "memory.soft_limit_in_bytes")) + runtime.capabilities.MemoryLimit = err1 == nil && err2 == nil + if !runtime.capabilities.MemoryLimit && !quiet { + log.Printf("WARNING: Your kernel does not support cgroup memory limit.") + } + + _, err = ioutil.ReadFile(path.Join(cgroupMemoryMountpoint, "memory.memsw.limit_in_bytes")) + runtime.capabilities.SwapLimit = err == nil + if !runtime.capabilities.SwapLimit && !quiet { + log.Printf("WARNING: Your kernel does not support cgroup swap limit.") + } + } +} + // FIXME: harmonize with NewGraph() func NewRuntime(autoRestart bool) (*Runtime, error) { runtime, err := NewRuntimeFromDirectory("/var/lib/docker", autoRestart) @@ -369,23 +390,7 @@ func NewRuntime(autoRestart bool) (*Runtime, error) { log.Printf("WARNING: You are running linux kernel version %s, which might be unstable running docker. Please upgrade your kernel to 3.8.0.", k.String()) } } - - if cgroupMemoryMountpoint, err := FindCgroupMountpoint("memory"); err != nil { - log.Printf("WARNING: %s\n", err) - } else { - _, err1 := ioutil.ReadFile(path.Join(cgroupMemoryMountpoint, "memory.limit_in_bytes")) - _, err2 := ioutil.ReadFile(path.Join(cgroupMemoryMountpoint, "memory.soft_limit_in_bytes")) - runtime.capabilities.MemoryLimit = err1 == nil && err2 == nil - if !runtime.capabilities.MemoryLimit { - log.Printf("WARNING: Your kernel does not support cgroup memory limit.") - } - - _, err = ioutil.ReadFile(path.Join(cgroupMemoryMountpoint, "memory.memsw.limit_in_bytes")) - runtime.capabilities.SwapLimit = err == nil - if !runtime.capabilities.SwapLimit { - log.Printf("WARNING: Your kernel does not support cgroup swap limit.") - } - } + runtime.UpdateCapabilities(false) return runtime, nil } diff --git a/runtime_test.go b/runtime_test.go index d069afd005..e9be838c0e 100644 --- a/runtime_test.go +++ b/runtime_test.go @@ -93,7 +93,7 @@ func newTestRuntime() (*Runtime, error) { if err != nil { return nil, err } - + runtime.UpdateCapabilities(true) return runtime, nil }