Since commit http://git.kernel.org/linus/a42c390cfa0c,
which added an option to control memcg swap, when kernel
neither set CGROUP_MEM_RES_CTLR_SWAP_ENABLED nor add
'swapaccount=1' kernel parameter, that indicates memcg swap
accounting is disabled, it will have no such file:
memory.memsw.*, then oom03 & oom04 cases will fail.

The patch fixed it: removed memsw cases when memcg swap
accounting is disabled, and added a TCONF:
tst_resm(TCONF,"memcg swap accounting is disabled");

Signed-off-by: Zhouping Liu <[email protected]>
Reviewed-by: Caspar Zhang <[email protected]>

v2 -> v3: added MEMCG_SW_LIMIT to instead of
          'MEMCG_PATH_NEW "/memory.memsw.limit_in_bytes"'
          and updated TINFO to TCONF, which made more sense.
---
 testcases/kernel/mem/include/mem.h |    1 +
 testcases/kernel/mem/oom/oom03.c   |   12 ++++++++++--
 testcases/kernel/mem/oom/oom04.c   |   25 ++++++++++++++++++++-----
 3 files changed, 31 insertions(+), 7 deletions(-)

diff --git a/testcases/kernel/mem/include/mem.h 
b/testcases/kernel/mem/include/mem.h
index 00bb139..4c568cd 100644
--- a/testcases/kernel/mem/include/mem.h
+++ b/testcases/kernel/mem/include/mem.h
@@ -50,6 +50,7 @@ void ksm_usage(void);
 #define CPATH_NEW              CPATH "/1"
 #define MEMCG_PATH             "/dev/cgroup"
 #define MEMCG_PATH_NEW         MEMCG_PATH "/1"
+#define MEMCG_SW_LIMIT         MEMCG_PATH_NEW "/memory.memsw.limit_in_bytes"
 #if HAVE_SYS_EVENTFD_H
 #define PATH_OOMCTRL           MEMCG_PATH_NEW "/memory.oom_control"
 #define PATH_EVTCTRL           MEMCG_PATH_NEW "/cgroup.event_control"
diff --git a/testcases/kernel/mem/oom/oom03.c b/testcases/kernel/mem/oom/oom03.c
index b90d4d7..6de68b0 100644
--- a/testcases/kernel/mem/oom/oom03.c
+++ b/testcases/kernel/mem/oom/oom03.c
@@ -66,8 +66,16 @@ int main(int argc, char *argv[])
                write_file(MEMCG_PATH_NEW "/memory.limit_in_bytes", mem);
                testoom(0, 0, 0);
 
-               write_file(MEMCG_PATH_NEW "/memory.memsw.limit_in_bytes", mem);
-               testoom(0, 1, 0);
+               if (access(MEMCG_SW_LIMIT, F_OK) == -1) {
+                       if (errno == ENOENT)
+                               tst_resm(TCONF,
+                                   "memcg swap accounting is disabled");
+                       else
+                               tst_brkm(TBROK|TERRNO, cleanup, "access");
+               } else {
+                       write_file(MEMCG_SW_LIMIT, mem);
+                       testoom(0, 1, 0);
+               }
        }
        cleanup();
        tst_exit();
diff --git a/testcases/kernel/mem/oom/oom04.c b/testcases/kernel/mem/oom/oom04.c
index fb35f96..00030b9 100644
--- a/testcases/kernel/mem/oom/oom04.c
+++ b/testcases/kernel/mem/oom/oom04.c
@@ -48,6 +48,7 @@ int main(int argc, char *argv[])
 {
        char *msg;
        int lc;
+       int swap_acc_on = 1;
        long nodes[MAXNODES];
        char buf[BUFSIZ], mem[BUFSIZ];
 
@@ -73,19 +74,33 @@ int main(int argc, char *argv[])
                snprintf(mem, BUFSIZ, "%ld", TESTMEM);
                write_file(MEMCG_PATH_NEW "/memory.limit_in_bytes", mem);
 
+               if (access(MEMCG_SW_LIMIT, F_OK) == -1) {
+                       if (errno == ENOENT) {
+                               tst_resm(TCONF,
+                                   "memcg swap accounting is disabled");
+                               swap_acc_on = 0;
+                       } else
+                               tst_brkm(TBROK|TERRNO, cleanup, "access");
+               }
+
                tst_resm(TINFO, "process mempolicy.");
                testoom(1, 0, 1);
 
-               write_file(MEMCG_PATH_NEW "/memory.memsw.limit_in_bytes", mem);
-               testoom(1, 1, 1);
+               if (swap_acc_on) {
+                       write_file(MEMCG_SW_LIMIT, mem);
+                       testoom(1, 1, 1);
+               }
 
                tst_resm(TINFO, "process cpuset.");
 
-               write_file(MEMCG_PATH_NEW "/memory.memsw.limit_in_bytes", "-1");
+               if (swap_acc_on)
+                       write_file(MEMCG_SW_LIMIT, "-1");
                testoom(0, 0, 1);
 
-               write_file(MEMCG_PATH_NEW "/memory.memsw.limit_in_bytes", mem);
-               testoom(0, 1, 1);
+               if (swap_acc_on) {                      
+                       write_file(MEMCG_SW_LIMIT, mem);
+                       testoom(0, 1, 1);
+               }
        }
        cleanup();
        tst_exit();
-- 
1.7.7.6


------------------------------------------------------------------------------
This SF email is sponsosred by:
Try Windows Azure free for 90 days Click Here 
http://p.sf.net/sfu/sfd2d-msazure
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list

Reply via email to