cgroup: change cgroup deletion logic on v1
do not raise an error if the cgroup exists at least on one
controller.
Previously it expected the cgroup to exists under all the
controllers.
[NO TESTS NEEDED]
Closes:
@@ -331,10 +331,18 @@ func Load(path string) (*CgroupControl, error) {
control.additionalControllers = controllers
}
if !cgroup2 {
+ oneExists := false
+ // check that the cgroup exists at least under one controller
for name := range handlers {
p := control.getCgroupv1Path(name)
- if _, err := os.Stat(p); err != nil {
- if os.IsNotExist(err) {
+ if _, err := os.Stat(p); err == nil {
+ oneExists = true
+ break
+ }
+ }
+
+ // if there is no controller at all, raise an error
+ if !oneExists {
if rootless.IsRootless() {
return nil, ErrCgroupV1Rootless
}
@@ -343,8 +351,6 @@ func Load(path string) (*CgroupControl, error) {
return nil, ErrCgroupDeleted
}
}
- }
- }
return control, nil
}
