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
