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