Re: [PATCH v7 8/8] selftests/cgroup: test_zswap: wait for asynchronous writeback
From: Michal Koutný
Date: Wed Jun 17 2026 - 08:34:56 EST
On Fri, Apr 24, 2026 at 12:00:59PM +0800, Li Wang <li.wang@xxxxxxxxx> wrote:
> @@ -345,7 +366,10 @@ static int test_zswap_writeback_one(const char *cgroup, bool wb)
> return -1;
>
> /* Verify that zswap writeback occurred only if writeback was enabled */
> - zswpwb_after = get_cg_wb_count(cgroup);
> + if (wb)
> + zswpwb_after = wait_for_writeback(cgroup, 5000);
We should have something like
cg_read_key_long_poll(cgroup,
"memory.stat",
"zswpwb",
0,
500,
DEFAULT_WAIT_INTERVAL_US);
for this.
Although this also needs further change like (and respective adjustment):
diff --git a/tools/testing/selftests/cgroup/lib/cgroup_util.c b/tools/testing/selftests/cgroup/lib/cgroup_util.c
index a7b3380d88d77..c0511853db9c6 100644
--- a/tools/testing/selftests/cgroup/lib/cgroup_util.c
+++ b/tools/testing/selftests/cgroup/lib/cgroup_util.c
@@ -188,8 +188,8 @@ long cg_read_key_long(const char *cgroup, const char *control, const char *key)
}
long cg_read_key_long_poll(const char *cgroup, const char *control,
- const char *key, long expected, int retries,
- useconds_t wait_interval_us)
+ const char *key, enum exp_op expected_op, long expected,
+ int retries, useconds_t wait_interval_us)
{
long val = -1;
int i;
@@ -199,7 +199,9 @@ long cg_read_key_long_poll(const char *cgroup, const char *control,
if (val < 0)
return val;
- if (val == expected)
+ if (expected_op == EXP_EQUAL && val == expected)
+ break;
+ if (expected_op == EXP_GT && val > expected)
break;
usleep(wait_interval_us);
diff --git a/tools/testing/selftests/cgroup/lib/include/cgroup_util.h b/tools/testing/selftests/cgroup/lib/include/cgroup_util.h
index 567b1082974c5..3e9bfb66cf5a9 100644
--- a/tools/testing/selftests/cgroup/lib/include/cgroup_util.h
+++ b/tools/testing/selftests/cgroup/lib/include/cgroup_util.h
@@ -19,6 +19,11 @@
#define DEFAULT_WAIT_INTERVAL_US (100 * 1000) /* 100 ms */
+enum exp_op {
+ EXP_EQUAL,
+ EXP_GT,
+};
+
/*
* Checks if two given values differ by less than err% of their sum.
*/
@@ -69,8 +74,8 @@ extern long cg_read_long(const char *cgroup, const char *control);
extern long cg_read_long_fd(int fd);
long cg_read_key_long(const char *cgroup, const char *control, const char *key);
long cg_read_key_long_poll(const char *cgroup, const char *control,
- const char *key, long expected, int retries,
- useconds_t wait_interval_us);
+ const char *key, enum exp_op expected_op, long expected,
+ int retries, useconds_t wait_interval_us);
extern long cg_read_lc(const char *cgroup, const char *control);
extern int cg_write(const char *cgroup, const char *control, char *buf);
extern int cg_open(const char *cgroup, const char *control, int flags);
Attachment:
signature.asc
Description: PGP signature