[PATCH v2 3/3] selftests/mm: test splitting file-backed THP to any lower order.

From: Zi Yan
Date: Wed Jan 22 2025 - 11:20:03 EST


Now split_huge_page*() supports shmem THP split to any lower order.
Test it.

The test now reads file content out after split to check if the split
corrupts the file data.

Signed-off-by: Zi Yan <ziy@xxxxxxxxxx>
Reviewed-by: Baolin Wang <baolin.wang@xxxxxxxxxxxxxxxxx>
Tested-by: Baolin Wang <baolin.wang@xxxxxxxxxxxxxxxxx>
---
tools/testing/selftests/mm/split_huge_page_test.c | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/tools/testing/selftests/mm/split_huge_page_test.c b/tools/testing/selftests/mm/split_huge_page_test.c
index ba498aaaf857..e0304046b1a0 100644
--- a/tools/testing/selftests/mm/split_huge_page_test.c
+++ b/tools/testing/selftests/mm/split_huge_page_test.c
@@ -261,7 +261,7 @@ void split_pte_mapped_thp(void)
close(kpageflags_fd);
}

-void split_file_backed_thp(void)
+void split_file_backed_thp(int order)
{
int status;
int fd;
@@ -313,7 +313,7 @@ void split_file_backed_thp(void)
}

/* split the file-backed THP */
- write_debugfs(PATH_FMT, testfile, pgoff_start, pgoff_end, 0);
+ write_debugfs(PATH_FMT, testfile, pgoff_start, pgoff_end, order);

/* check file content after split */
status = lseek(fd, 0, SEEK_SET);
@@ -351,7 +351,7 @@ void split_file_backed_thp(void)
ksft_exit_fail_msg("cannot remove tmp dir: %s\n", strerror(errno));

ksft_print_msg("Please check dmesg for more information\n");
- ksft_test_result_pass("File-backed THP split test done\n");
+ ksft_test_result_pass("File-backed THP split to order %d test done\n", order);
return;

close_file:
@@ -517,7 +517,7 @@ int main(int argc, char **argv)
if (argc > 1)
optional_xfs_path = argv[1];

- ksft_set_plan(1+8+2+9);
+ ksft_set_plan(1+8+1+9+9);

pagesize = getpagesize();
pageshift = ffs(pagesize) - 1;
@@ -534,7 +534,8 @@ int main(int argc, char **argv)
split_pmd_thp_to_order(i);

split_pte_mapped_thp();
- split_file_backed_thp();
+ for (i = 0; i < 9; i++)
+ split_file_backed_thp(i);

created_tmp = prepare_thp_fs(optional_xfs_path, fs_loc_template,
&fs_loc);
--
2.45.2