From 7fdeda87173ee6722ef1cbe7b21a13ac8b173365 Mon Sep 17 00:00:00 2001 From: Michael Crosby Date: Fri, 18 Apr 2014 22:17:31 -0700 Subject: [PATCH] Add remove method to subsystems Docker-DCO-1.1-Signed-off-by: Michael Crosby (github: crosbymichael) --- pkg/cgroups/fs/apply_raw.go | 31 +++++++++++++------------------ pkg/cgroups/fs/blkio.go | 4 ++++ pkg/cgroups/fs/cpu.go | 4 ++++ pkg/cgroups/fs/cpuacct.go | 4 ++++ pkg/cgroups/fs/cpuset.go | 4 ++++ pkg/cgroups/fs/devices.go | 4 ++++ pkg/cgroups/fs/freezer.go | 4 ++++ pkg/cgroups/fs/memory.go | 4 ++++ pkg/cgroups/fs/perf_event.go | 4 ++++ 9 files changed, 45 insertions(+), 18 deletions(-) diff --git a/pkg/cgroups/fs/apply_raw.go b/pkg/cgroups/fs/apply_raw.go index 4f1b379726..cdb2b354c6 100644 --- a/pkg/cgroups/fs/apply_raw.go +++ b/pkg/cgroups/fs/apply_raw.go @@ -25,6 +25,7 @@ var ( type subsystem interface { Set(*data) error + Remove(*data) error } type data struct { @@ -94,24 +95,8 @@ func (raw *data) join(subsystem string) (string, error) { } func (raw *data) Cleanup() error { - get := func(subsystem string) string { - path, _ := raw.path(subsystem) - return path - } - - for _, path := range []string{ - get("memory"), - get("devices"), - get("cpu"), - get("cpuset"), - get("cpuacct"), - get("blkio"), - get("perf_event"), - get("freezer"), - } { - if path != "" { - os.RemoveAll(path) - } + for _, sys := range subsystems { + sys.Remove(raw) } return nil } @@ -119,3 +104,13 @@ func (raw *data) Cleanup() error { func writeFile(dir, file, data string) error { return ioutil.WriteFile(filepath.Join(dir, file), []byte(data), 0700) } + +func removePath(p string, err error) error { + if err != nil { + return err + } + if p != "" { + return os.RemoveAll(p) + } + return nil +} diff --git a/pkg/cgroups/fs/blkio.go b/pkg/cgroups/fs/blkio.go index f0096f8767..48dcf1a54d 100644 --- a/pkg/cgroups/fs/blkio.go +++ b/pkg/cgroups/fs/blkio.go @@ -14,3 +14,7 @@ func (s *blkioGroup) Set(d *data) error { } return nil } + +func (s *blkioGroup) Remove(d *data) error { + return removePath(d.path("blkio")) +} diff --git a/pkg/cgroups/fs/cpu.go b/pkg/cgroups/fs/cpu.go index 33879bad14..f458d7915e 100644 --- a/pkg/cgroups/fs/cpu.go +++ b/pkg/cgroups/fs/cpu.go @@ -21,3 +21,7 @@ func (s *cpuGroup) Set(d *data) error { } return nil } + +func (s *cpuGroup) Remove(d *data) error { + return removePath(d.path("cpu")) +} diff --git a/pkg/cgroups/fs/cpuacct.go b/pkg/cgroups/fs/cpuacct.go index 603b100571..22dfb4185f 100644 --- a/pkg/cgroups/fs/cpuacct.go +++ b/pkg/cgroups/fs/cpuacct.go @@ -14,3 +14,7 @@ func (s *cpuacctGroup) Set(d *data) error { } return nil } + +func (s *cpuacctGroup) Remove(d *data) error { + return removePath(d.path("cpuacct")) +} diff --git a/pkg/cgroups/fs/cpuset.go b/pkg/cgroups/fs/cpuset.go index 5108365ebd..3d3b15f113 100644 --- a/pkg/cgroups/fs/cpuset.go +++ b/pkg/cgroups/fs/cpuset.go @@ -26,3 +26,7 @@ func (s *cpusetGroup) Set(d *data) error { } return nil } + +func (s *cpusetGroup) Remove(d *data) error { + return removePath(d.path("cpuset")) +} diff --git a/pkg/cgroups/fs/devices.go b/pkg/cgroups/fs/devices.go index 769df39283..fc5d83b9c9 100644 --- a/pkg/cgroups/fs/devices.go +++ b/pkg/cgroups/fs/devices.go @@ -59,3 +59,7 @@ func (s *devicesGroup) Set(d *data) error { } return nil } + +func (s *devicesGroup) Remove(d *data) error { + return removePath(d.path("devices")) +} diff --git a/pkg/cgroups/fs/freezer.go b/pkg/cgroups/fs/freezer.go index 51db689b0a..05bc584cf4 100644 --- a/pkg/cgroups/fs/freezer.go +++ b/pkg/cgroups/fs/freezer.go @@ -14,3 +14,7 @@ func (s *freezerGroup) Set(d *data) error { } return nil } + +func (s *freezerGroup) Remove(d *data) error { + return removePath(d.path("freezer")) +} diff --git a/pkg/cgroups/fs/memory.go b/pkg/cgroups/fs/memory.go index cf33d66117..a098f21df9 100644 --- a/pkg/cgroups/fs/memory.go +++ b/pkg/cgroups/fs/memory.go @@ -39,3 +39,7 @@ func (s *memoryGroup) Set(d *data) error { } return nil } + +func (s *memoryGroup) Remove(d *data) error { + return removePath(d.path("memory")) +} diff --git a/pkg/cgroups/fs/perf_event.go b/pkg/cgroups/fs/perf_event.go index 2af6d7a512..b5ec6c6fd3 100644 --- a/pkg/cgroups/fs/perf_event.go +++ b/pkg/cgroups/fs/perf_event.go @@ -14,3 +14,7 @@ func (s *perfEventGroup) Set(d *data) error { } return nil } + +func (s *perfEventGroup) Remove(d *data) error { + return removePath(d.path("perf_event")) +}