memory.numa_migrate migrates asynchronously, so it skips the folios that
are under writeback or locked for it when it gets to them. The
inactive_disk_file variant dirties 1 GiB of a disk file with write
faults, and writeback of that file is still running when the test
migrates it, so part of the file can stay on the source node.
Populate that file with read faults instead. The file is a hole, so its
page cache stays clean and nothing is written back. disk_file keeps
writing to its pages while they are migrated and is left as is.
Fixes: 3842964f4497 ("selftests: cgroup: test numa migration of lruvecs")
https://virtuozzo.atlassian.net/browse/VSTOR-154520
Feature: fix selftests
Signed-off-by: Eva Kurchatova <[email protected]>
---
tools/testing/selftests/cgroup/test_numa_migrate.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/tools/testing/selftests/cgroup/test_numa_migrate.c
b/tools/testing/selftests/cgroup/test_numa_migrate.c
index 12c9bab79d6e..5e9f594ffb9f 100644
--- a/tools/testing/selftests/cgroup/test_numa_migrate.c
+++ b/tools/testing/selftests/cgroup/test_numa_migrate.c
@@ -588,6 +588,7 @@ static int touch_pages(const char *cgroup, void *arg)
volatile uint8_t *ptr;
enum memory_type mem_type;
bool inactive;
+ int populate;
char tmp = 's';
struct test_context *ctx = arg;
int ret = EXIT_SUCCESS;
@@ -596,6 +597,9 @@ static int touch_pages(const char *cgroup, void *arg)
mem_type = variant->mem_type;
inactive = mem_type == MEMORY_TYPE_INACTIVE_FILE ||
mem_type == MEMORY_TYPE_INACTIVE_ANON;
+ /* Read faults leave the file clean, so writeback cannot hold pages
back */
+ populate = mem_type == MEMORY_TYPE_INACTIVE_FILE ?
+ MADV_POPULATE_READ : MADV_POPULATE_WRITE;
numa_bind(src_mask);
@@ -624,7 +628,7 @@ static int touch_pages(const char *cgroup, void *arg)
}
}
- if (madvise(mmap_ptr, file_size, MADV_POPULATE_WRITE) < 0) {
+ if (madvise(mmap_ptr, file_size, populate) < 0) {
ksft_perror("failed to populate test mapping\n");
ret = EXIT_FAILURE;
goto err_unmap;
--
2.56.0
_______________________________________________
Devel mailing list
[email protected]
https://lists.openvz.org/mailman/listinfo/devel