From f7d616b27608938de3bfdd8f03b9cb38fc404c4e Mon Sep 17 00:00:00 2001
From: zhangtianyang <zhangtianyang2@huawei.com>
Date: Sun, 20 Oct 2019 17:25:23 +0800
Subject: [PATCH] runc: add log message for cgroup file check

reason: docker report "no such file" when try to write cpuset.mems,
not sure weather is deleted or not generated by kernel. so add
cgroup file check messages for further maintainance.
write action will not report error when file not exist, actual
reporter is read action in cgroup copy function.

Change-Id: I8e1620dd67907730f0fc4d4d7004d710c7665aa0
Signed-off-by: zhangtianyang <zhangtianyang2@huawei.com>
---
 libcontainer/cgroups/fs/cpuset.go | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/libcontainer/cgroups/fs/cpuset.go b/libcontainer/cgroups/fs/cpuset.go
index bc654948..76cb719b 100644
--- a/libcontainer/cgroups/fs/cpuset.go
+++ b/libcontainer/cgroups/fs/cpuset.go
@@ -161,10 +161,18 @@ func (s *CpusetGroup) copyIfNeeded(current, parent string) error {
 	)
 
 	if currentCpus, currentMems, err = s.getSubsystemSettings(current); err != nil {
-		return err
+		ret := fmt.Errorf("failed copy parent cgroup setting, %v", err)
+		if _, err := os.Stat(current); err != nil {
+			ret = fmt.Errorf("%v, %v", ret, err)
+		}
+		return ret
 	}
 	if parentCpus, parentMems, err = s.getSubsystemSettings(parent); err != nil {
-		return err
+		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 s.isEmpty(currentCpus) {
-- 
2.19.1

