From aff98c05dbaf30fec52a0afed19ebf4a03303d63 Mon Sep 17 00:00:00 2001 From: caihaomin Date: Mon, 6 Nov 2017 01:43:45 +0000 Subject: [PATCH 57/94] runc: change read value of cgroup files.limit into string [Changelog]:change read value of cgroup files.limit from int to string. For avoiding of value `max` [Author]git Change-Id: Iec6197528b1aebb13a0ea64ba919a7b4c6f31d61 Signed-off-by: caihaomin --- libcontainer/cgroups/fs/files.go | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/libcontainer/cgroups/fs/files.go b/libcontainer/cgroups/fs/files.go index 3214a82..70e9524 100644 --- a/libcontainer/cgroups/fs/files.go +++ b/libcontainer/cgroups/fs/files.go @@ -8,6 +8,7 @@ import ( "github.com/opencontainers/runc/libcontainer/cgroups" "github.com/opencontainers/runc/libcontainer/configs" + "path/filepath" ) type FilesGroup struct { @@ -51,12 +52,21 @@ func (s *FilesGroup) GetStats(path string, stats *cgroups.Stats) error { return fmt.Errorf("failed to parse files.usage - %s", err) } - limit, err := getCgroupParamUint(path, "files.limit") + maxString, err := getCgroupParamString(path, "files.limit") if err != nil { return fmt.Errorf("failed to parse files.limit - %s", err) } + // Default if files.limit == "max" is 0 -- which represents "no limit". + var max uint64 + if maxString != "max" { + max, err = parseUint(maxString, 10, 64) + if err != nil { + return fmt.Errorf("failed to parse files.limit -- unable to parse %q as a uint from Cgroup file %q", maxString, filepath.Join(path, "file.limits")) + } + } + stats.FilesStats.Usage = usage - stats.FilesStats.Limit = limit + stats.FilesStats.Limit = max return nil } -- 2.7.4.3