Fix handling name= cgroups

Before name=systemd cgroup was mounted inside container to
/sys/fs/cgroup/name=systemd, which is wrong, it should be
/sys/fs/cgroup/systemd

Signed-off-by: Alexander Morozov <lk4d4@docker.com>
This commit is contained in:
Alexander Morozov 2015-07-15 12:10:15 -07:00
parent 42aa891a6b
commit e289cf734b
1 changed files with 5 additions and 3 deletions

View File

@ -17,6 +17,8 @@ import (
"github.com/docker/docker/pkg/units"
)
const cgroupNamePrefix = "name="
// https://www.kernel.org/doc/Documentation/cgroups/cgroups.txt
func FindCgroupMountpoint(subsystem string) (string, error) {
f, err := os.Open("/proc/self/mountinfo")
@ -90,8 +92,8 @@ func GetCgroupMounts() ([]Mount, error) {
m := Mount{Mountpoint: mount.Mountpoint}
for _, opt := range strings.Split(mount.VfsOpts, ",") {
if strings.HasPrefix(opt, "name=") {
m.Subsystems = append(m.Subsystems, opt)
if strings.HasPrefix(opt, cgroupNamePrefix) {
m.Subsystems = append(m.Subsystems, opt[len(cgroupNamePrefix):])
}
if allMap[opt] {
m.Subsystems = append(m.Subsystems, opt)
@ -186,7 +188,7 @@ func ParseCgroupFile(subsystem string, r io.Reader) (string, error) {
parts := strings.Split(text, ":")
for _, subs := range strings.Split(parts[1], ",") {
if subs == subsystem {
if subs == subsystem || subs == cgroupNamePrefix+subsystem {
return parts[2], nil
}
}