On Mon, Aug 24, 2026 at 03:33:57AM +0000, Wilson Felipe Pereira <[email protected]> wrote: > When running test_zswap on a single-core VM (-smp 1) with 4GB of RAM, > test_zswap_writeback intermittently fails on the initial run after boot. > > In test_zswap_writeback(), after waitpid() reaps the child process created > by test_zswap_writeback_one(), writing "+memory" to cgroup.subtree_control > can fail with -EBUSY. Under cgroup v2, enabling domain subtree controllers > is forbidden while any tasks remain in cgroup.procs. > > When a child process exits, exit_notify() wakes the parent process, > allowing waitpid() to return immediately. However, the cgroup populated > task count (nr_populated_csets) is only decremented when the exiting > task is switched away via finish_task_switch() -> cgroup_task_dead(). On > single-core systems, the parent runs before the dead child has been > switched out, causing "+memory" to fail with -EBUSY if written immediately > after waitpid() returns. > > Fix this by waiting for cgroup.events to report "populated 0\n" via > cg_read_strcmp_wait() before enabling subtree control. > > Signed-off-by: Wilson Felipe Pereira <[email protected]> > --- > tools/testing/selftests/cgroup/test_zswap.c | 2 ++ > 1 file changed, 2 insertions(+)
Acked-by: Michal Koutný <[email protected]>
signature.asc
Description: PGP signature

