Re: [PATCH] selftests/cgroup: test_zswap: skip test_no_kmem_bypass if debugfs is unavailable
Anshuman Khandual <[email protected]> Mon, 3 Aug 2026 11:04:00 +0530
| Newsgroups | org.kernel.vger.cgroups,org.kernel.vger.linux-kselftest,org.kvack.linux-mm |
|---|---|
| Message-ID | <47ho7uhwnbtjmqrdr5hzxuy2dcfb2dal7so6ztt7obmqepeuri@e7bc5dfit4tm> |
On Sat, Aug 01, 2026 at 04:12:46AM +0000, Wilson Felipe Pereira wrote: > 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. Agreed. > > 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"); Agreed - should not silently just skip the test. > return KSFT_SKIP; > + } > + if (get_zswap_stored_pages(&stored_pages)) { > + ksft_print_msg("debugfs at /sys/kernel/debug is required\n"); Could the error message here match that in gup_test.c for consistency and probably later on these could be factored out in a macro constant ksft_print_msg("mount debugfs at /sys/kernel/debug\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 > Otherwise LGTM. Reviewed-by: Anshuman Khandual <[email protected]>