[PATCH] selftests/cgroup: test_zswap: skip test_no_kmem_bypass if debugfs is unavailable
Wilson Felipe Pereira <[email protected]> Sat, 1 Aug 2026 04:12:46 +0000
| Newsgroups | org.kernel.vger.cgroups,org.kernel.vger.linux-kselftest,org.kvack.linux-mm |
|---|---|
| Message-ID | <[email protected]> |
test_no_kmem_bypass() needs to read /sys/kernel/debug/zswap/stored_pages via get_zswap_stored_pages() to verify that compressed pages are charged to the memcg. When running in an environment where debugfs is not mounted or CONFIG_DEBUG_FS is disabled, get_zswap_stored_pages() fails, causing the loop to terminate early and report a false negative (KSFT_FAIL). Selftests should not fail when if debugfs is unavailable, and it should print a message when it is skipped. Signed-off-by: Wilson Felipe Pereira <[email protected]> --- tools/testing/selftests/cgroup/test_zswap.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/tools/testing/selftests/cgroup/test_zswap.c b/tools/testing/selftests/cgroup/test_zswap.c index 49b36ee791606..c4f7b66f1b206 100644 --- a/tools/testing/selftests/cgroup/test_zswap.c +++ b/tools/testing/selftests/cgroup/test_zswap.c @@ -566,12 +566,19 @@ static int test_no_kmem_bypass(const char *root) int child_status; char *test_group = NULL; pid_t child_pid; + size_t stored_pages; /* Read sys info and compute test values accordingly */ if (sysinfo(&sys_info) != 0) return KSFT_FAIL; - if (sys_info.totalram > 5000000000) + if (sys_info.totalram > 5000000000) { + ksft_print_msg("requires less than 5000000000 total ram\n"); return KSFT_SKIP; + } + if (get_zswap_stored_pages(&stored_pages)) { + ksft_print_msg("debugfs at /sys/kernel/debug is required\n"); + return KSFT_SKIP; + } values = mmap(0, sizeof(struct no_kmem_bypass_child_args), PROT_READ | PROT_WRITE, MAP_SHARED | MAP_ANONYMOUS, -1, 0); if (values == MAP_FAILED) @@ -604,7 +611,6 @@ static int test_no_kmem_bypass(const char *root) /* Try to wakeup kswapd and let it push child memory to zswap */ set_min_free_kb(min_free_kb_high); for (int i = 0; i < 20; i++) { - size_t stored_pages; char *trigger_allocation = malloc(trigger_allocation_size); if (!trigger_allocation) -- 2.55.0.508.g3f0d502094-goog