run_vmtests.sh creates a loop-mounted XFS for "khugepaged all:file" and
for the pagecache folio split cases of split_huge_page_test, since
tmpfs does not give them large pagecache folios.

It only does so when xfs already shows up in /proc/filesystems. When
xfs is built as a module that is not loaded yet, the check fails, no
XFS is created, "khugepaged all:file" is reported as skipped and every
pagecache folio split case of split_huge_page_test is skipped with "No
large pagecache folio generated".

Try to load the module when xfs is not registered yet.

"run_vmtests.sh -a -t thp" with xfs built as a module and not loaded:

                                   before    after
  skipped tests                         1        0
  skipped split_huge_page_test cases   43        0

Fixes: fc4d182316bd ("mm: huge_memory: enable debugfs to split huge pages to 
any order")
Signed-off-by: Qiliang Yuan <[email protected]>
---
 tools/testing/selftests/mm/run_vmtests.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/testing/selftests/mm/run_vmtests.sh 
b/tools/testing/selftests/mm/run_vmtests.sh
index a1b45a3dedaee..6b754555d5734 100755
--- a/tools/testing/selftests/mm/run_vmtests.sh
+++ b/tools/testing/selftests/mm/run_vmtests.sh
@@ -399,7 +399,7 @@ CATEGORY="thp" run_test ./khugepaged -s 4 all:shmem
 # Try to create XFS if not provided
 if [ -z "${SPLIT_HUGE_PAGE_TEST_XFS_PATH}" ]; then
     if test_selected "thp"; then
-       if grep xfs /proc/filesystems &>/dev/null; then
+       if grep -q xfs /proc/filesystems || modprobe -q xfs 2>/dev/null; then
            XFS_IMG=$(mktemp /tmp/xfs_img_XXXXXX)
            XFS_DIR=$(mktemp -d /tmp/xfs_dir_XXXXXX)
            truncate -s 314572800 ${XFS_IMG}

---
base-commit: 437a7e839def0f505277022622fc59a8b071d6cf
change-id: 20261016-bug-selftests-mm-run-vmtests-xfs-modprobe-de0697d4c4e9

Best regards,
-- 
Qiliang Yuan <[email protected]>


Reply via email to