From 529dd48929d033f05e26ce8c82daa774d9092a4c Mon Sep 17 00:00:00 2001 From: Kir Kolyshkin Date: Wed, 23 Sep 2020 14:26:19 -0700 Subject: [PATCH] libct/cg/fs.getMount: reuse cgroups.GetCgroupMountinfo Reuse cgroups.GetCgroupMountinfo instead of parsing mountinfo directly. Signed-off-by: Kir Kolyshkin --- libcontainer/cgroups/fs/cpuset.go | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/libcontainer/cgroups/fs/cpuset.go b/libcontainer/cgroups/fs/cpuset.go index ba17519baea..73bbfe12b8d 100644 --- a/libcontainer/cgroups/fs/cpuset.go +++ b/libcontainer/cgroups/fs/cpuset.go @@ -7,8 +7,8 @@ import ( "io/ioutil" "os" "path/filepath" + "strings" - "github.com/moby/sys/mountinfo" "github.com/opencontainers/runc/libcontainer/cgroups" "github.com/opencontainers/runc/libcontainer/cgroups/fscommon" "github.com/opencontainers/runc/libcontainer/configs" @@ -47,7 +47,7 @@ func (s *CpusetGroup) GetStats(path string, stats *cgroups.Stats) error { // Get the source mount point of directory passed in as argument. func getMount(dir string) (string, error) { - mi, err := mountinfo.GetMounts(mountinfo.ParentsFilter(dir)) + mi, err := cgroups.ReadCgroupMountinfo() if err != nil { return "", err } @@ -55,11 +55,15 @@ func getMount(dir string) (string, error) { return "", errors.Errorf("Can't find mount point of %s", dir) } - // find the longest mount point + // find the longest mount point which can be a parent of dir var idx, maxlen int for i := range mi { - if len(mi[i].Mountpoint) > maxlen { - maxlen = len(mi[i].Mountpoint) + mp := mi[i].Mountpoint + if !strings.HasPrefix(dir, mp) { + continue + } + if len(mp) > maxlen { + maxlen = len(mp) idx = i } }