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:
parent
42aa891a6b
commit
e289cf734b
|
@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue