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".

Load xfs with load_module() when it is not registered yet, so that it
is unloaded again once the script is done. "run_vmtests.sh -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
  xfs loaded after the run             no       no

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 56f5416681da7..ba77fae5df4f2 100755
--- a/tools/testing/selftests/mm/run_vmtests.sh
+++ b/tools/testing/selftests/mm/run_vmtests.sh
@@ -428,7 +428,7 @@ CATEGORY="thp" run_test ./khugepaged -c 4 
mthp_khugepaged:anon
 # 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 || load_module xfs; then
            XFS_IMG=$(mktemp /tmp/xfs_img_XXXXXX)
            SPLIT_HUGE_PAGE_TEST_XFS_PATH=$(mktemp -d /tmp/xfs_dir_XXXXXX)
            truncate -s 314572800 ${XFS_IMG}

-- 
2.43.0


Reply via email to