88 lines
3.1 KiB
Diff
88 lines
3.1 KiB
Diff
From 436b642d42680fd76903307748df0237e8cd0cd1 Mon Sep 17 00:00:00 2001
|
|
From: zhongjiawei <zhongjiawei1@huawei.com>
|
|
Date: Wed, 26 Jul 2023 11:21:06 +0800
|
|
Subject: [PATCH] runc:add log message for cgroup file check
|
|
|
|
---
|
|
libcontainer/cgroups/file.go | 7 ++++++-
|
|
libcontainer/cgroups/fs/cpuset.go | 31 +++++++++++++++++++++++--------
|
|
2 files changed, 29 insertions(+), 9 deletions(-)
|
|
|
|
diff --git a/libcontainer/cgroups/file.go b/libcontainer/cgroups/file.go
|
|
index 0cdaf74..bc7f0a3 100644
|
|
--- a/libcontainer/cgroups/file.go
|
|
+++ b/libcontainer/cgroups/file.go
|
|
@@ -51,7 +51,12 @@ func WriteFile(dir, file, data string) error {
|
|
defer fd.Close()
|
|
if err := retryingWriteFile(fd, data); err != nil {
|
|
// Having data in the error message helps in debugging.
|
|
- return fmt.Errorf("failed to write %q: %w", data, err)
|
|
+ ret := fmt.Errorf("failed to write %v to %v: %v", data, file, err)
|
|
+ if _, err = os.Stat(dir); err != nil {
|
|
+ ret = fmt.Errorf("%v, failed to stat %v, %v", ret, dir, err)
|
|
+ }
|
|
+
|
|
+ return ret
|
|
}
|
|
return nil
|
|
}
|
|
diff --git a/libcontainer/cgroups/fs/cpuset.go b/libcontainer/cgroups/fs/cpuset.go
|
|
index c05a6f6..939b72c 100644
|
|
--- a/libcontainer/cgroups/fs/cpuset.go
|
|
+++ b/libcontainer/cgroups/fs/cpuset.go
|
|
@@ -27,14 +27,23 @@ func (s *CpusetGroup) Apply(path string, r *configs.Resources, pid int) error {
|
|
}
|
|
|
|
func (s *CpusetGroup) Set(path string, r *configs.Resources) error {
|
|
+ var ret error
|
|
if r.CpusetCpus != "" {
|
|
if err := cgroups.WriteFile(path, "cpuset.cpus", r.CpusetCpus); err != nil {
|
|
- return err
|
|
+ ret = fmt.Errorf("failed to set cpuset.cpus, %v", err)
|
|
+ if _, err := os.Stat(path); err != nil {
|
|
+ ret = fmt.Errorf("%v, failed to stat %v, %v", ret, path, err)
|
|
+ }
|
|
+ return ret
|
|
}
|
|
}
|
|
if r.CpusetMems != "" {
|
|
if err := cgroups.WriteFile(path, "cpuset.mems", r.CpusetMems); err != nil {
|
|
- return err
|
|
+ ret = fmt.Errorf("failed to set cpuset.mems, %v", err)
|
|
+ if _, err := os.Stat(path); err != nil {
|
|
+ ret = fmt.Errorf("%v, failed to stat %v, %v", ret, path, err)
|
|
+ }
|
|
+ return ret
|
|
}
|
|
}
|
|
return nil
|
|
@@ -233,13 +242,19 @@ func cpusetEnsureParent(current string) error {
|
|
// cpusetCopyIfNeeded copies the cpuset.cpus and cpuset.mems from the parent
|
|
// directory to the current directory if the file's contents are 0
|
|
func cpusetCopyIfNeeded(current, parent string) error {
|
|
- currentCpus, currentMems, err := getCpusetSubsystemSettings(current)
|
|
- if err != nil {
|
|
- return err
|
|
+ if currentCpus, currentMems, err := getCpusetSubsystemSettings(current); err != nil {
|
|
+ ret := fmt.Errorf("failed copy current cgroup setting, %v", err)
|
|
+ if _, err := os.Stat(current); err != nil {
|
|
+ ret = fmt.Errorf("%v, %v", ret, err)
|
|
+ }
|
|
+ return ret
|
|
}
|
|
- parentCpus, parentMems, err := getCpusetSubsystemSettings(parent)
|
|
- if err != nil {
|
|
- return err
|
|
+ if parentCpus, parentMems, err := getCpusetSubsystemSettings(parent); err != nil {
|
|
+ ret := fmt.Errorf("failed copy parent cgroup setting, %v", err)
|
|
+ if _, err := os.Stat(parent); err != nil {
|
|
+ ret = fmt.Errorf("%v, %v", ret, err)
|
|
+ }
|
|
+ return ret
|
|
}
|
|
|
|
if isEmptyCpuset(currentCpus) {
|
|
--
|
|
2.33.0
|
|
|