From 27dd48f6919a9bf8c25b41e97ca12f6fa73f8f77 Mon Sep 17 00:00:00 2001 From: Michael Crosby Date: Fri, 19 Feb 2016 11:23:30 -0800 Subject: [PATCH] Move the process outside of the systemd cgroup If you don't move the process out of the named cgroup for systemd then systemd will try to delete all the cgroups that the process is currently in. Signed-off-by: Michael Crosby --- libcontainer/cgroups/fs/apply_raw.go | 1 + libcontainer/cgroups/fs/name.go | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/libcontainer/cgroups/fs/apply_raw.go b/libcontainer/cgroups/fs/apply_raw.go index 7d2da2dc..f92e202f 100644 --- a/libcontainer/cgroups/fs/apply_raw.go +++ b/libcontainer/cgroups/fs/apply_raw.go @@ -29,6 +29,7 @@ var ( &NetPrioGroup{}, &PerfEventGroup{}, &FreezerGroup{}, + &NameGroup{GroupName: "name=systemd", Join: true}, } CgroupProcesses = "cgroup.procs" HugePageSizes, _ = cgroups.GetHugePageSize() diff --git a/libcontainer/cgroups/fs/name.go b/libcontainer/cgroups/fs/name.go index 0e423f66..d8cf1d87 100644 --- a/libcontainer/cgroups/fs/name.go +++ b/libcontainer/cgroups/fs/name.go @@ -9,6 +9,7 @@ import ( type NameGroup struct { GroupName string + Join bool } func (s *NameGroup) Name() string { @@ -16,6 +17,10 @@ func (s *NameGroup) Name() string { } func (s *NameGroup) Apply(d *cgroupData) error { + if s.Join { + // ignore errors if the named cgroup does not exist + d.join(s.GroupName) + } return nil } @@ -24,6 +29,9 @@ func (s *NameGroup) Set(path string, cgroup *configs.Cgroup) error { } func (s *NameGroup) Remove(d *cgroupData) error { + if s.Join { + removePath(d.path(s.GroupName)) + } return nil }