diff options
author | OpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com> | 2021-02-22 15:48:44 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-02-22 15:48:44 -0500 |
commit | c69decc305d746066824701ff073d5b34b744693 (patch) | |
tree | 5b91c7609aba8d9661bf34e543dfe4b5c6bdf368 | |
parent | e64669cb96cbb5802ee0d5a0f1aea9638b4d9dd8 (diff) | |
parent | e87c5b6c168e0eaf438ca75eb1b1c9ef1e9d246e (diff) | |
download | podman-c69decc305d746066824701ff073d5b34b744693.tar.gz podman-c69decc305d746066824701ff073d5b34b744693.tar.bz2 podman-c69decc305d746066824701ff073d5b34b744693.zip |
Merge pull request #9464 from giuseppe/fix-cgroupv1-stats
cgroup: change cgroup deletion logic on v1
-rw-r--r-- | pkg/cgroups/cgroups.go | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/pkg/cgroups/cgroups.go b/pkg/cgroups/cgroups.go index f563c51a8..608e1647a 100644 --- a/pkg/cgroups/cgroups.go +++ b/pkg/cgroups/cgroups.go @@ -331,18 +331,24 @@ 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 rootless.IsRootless() { - return nil, ErrCgroupV1Rootless - } - // compatible with the error code - // used by containerd/cgroups - return nil, ErrCgroupDeleted - } + 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 } + // compatible with the error code + // used by containerd/cgroups + return nil, ErrCgroupDeleted } } return control, nil |