From 8eecdd4d040233daacfde20d0f5c7191c9125e17 Mon Sep 17 00:00:00 2001 From: "Shuah Khan (Samsung OSG)" Date: Thu, 10 May 2018 13:59:25 -0600 Subject: selftests: memfd: split regular and hugetlbfs tests Split normal memfd and hugetlbfs tests to improve the test reporting. Remove run_fuse_test.sh and memfd_test from run_tests.sh and add them to the Makefile. Add memfd_test to TEST_GEN_PROGS to be run separately. Rename run_tests.sh to run_hugetlbfs_test.sh Add run_fuse_test.sh and run_hugetlbfs_test.sh to TEST_PROGS The report for non-root run wth this change is: TAP version 13 selftests: memfd: memfd_test ======================================== memfd: CREATE memfd: BASIC memfd: SEAL-WRITE memfd: SEAL-SHRINK memfd: SEAL-GROW memfd: SEAL-RESIZE memfd: SHARE-DUP memfd: SHARE-MMAP memfd: SHARE-OPEN memfd: SHARE-FORK memfd: SHARE-DUP (shared file-table) memfd: SHARE-MMAP (shared file-table) memfd: SHARE-OPEN (shared file-table) memfd: SHARE-FORK (shared file-table) memfd: DONE ok 1..1 selftests: memfd: memfd_test [PASS] selftests: memfd: run_fuse_test.sh ======================================== opening: ./mnt/memfd fuse: DONE ok 1..2 selftests: memfd: run_fuse_test.sh [PASS] selftests: memfd: run_hugetlbfs_test.sh ======================================== Please run memfd with hugetlbfs test as root not ok 1..3 selftests: memfd: run_hugetlbfs_test.sh [SKIP] Signed-off-by: Shuah Khan (Samsung OSG) Reviewed-by: Mike Kravetz Signed-off-by: Shuah Khan (Samsung OSG) --- tools/testing/selftests/memfd/Makefile | 6 +- .../testing/selftests/memfd/run_hugetlbfs_test.sh | 68 ++++++++++++++++++++ tools/testing/selftests/memfd/run_tests.sh | 74 ---------------------- 3 files changed, 71 insertions(+), 77 deletions(-) create mode 100755 tools/testing/selftests/memfd/run_hugetlbfs_test.sh delete mode 100755 tools/testing/selftests/memfd/run_tests.sh (limited to 'tools') diff --git a/tools/testing/selftests/memfd/Makefile b/tools/testing/selftests/memfd/Makefile index 0862e6f47a38..53a848109f7b 100644 --- a/tools/testing/selftests/memfd/Makefile +++ b/tools/testing/selftests/memfd/Makefile @@ -4,9 +4,9 @@ CFLAGS += -I../../../../include/uapi/ CFLAGS += -I../../../../include/ CFLAGS += -I../../../../usr/include/ -TEST_PROGS := run_tests.sh -TEST_FILES := run_fuse_test.sh -TEST_GEN_FILES := memfd_test fuse_mnt fuse_test +TEST_GEN_PROGS := memfd_test +TEST_PROGS := run_fuse_test.sh run_hugetlbfs_test.sh +TEST_GEN_FILES := fuse_mnt fuse_test fuse_mnt.o: CFLAGS += $(shell pkg-config fuse --cflags) diff --git a/tools/testing/selftests/memfd/run_hugetlbfs_test.sh b/tools/testing/selftests/memfd/run_hugetlbfs_test.sh new file mode 100755 index 000000000000..fb633eeb0290 --- /dev/null +++ b/tools/testing/selftests/memfd/run_hugetlbfs_test.sh @@ -0,0 +1,68 @@ +#!/bin/bash +# please run as root + +# Kselftest framework requirement - SKIP code is 4. +ksft_skip=4 + +# +# To test memfd_create with hugetlbfs, there needs to be hpages_test +# huge pages free. Attempt to allocate enough pages to test. +# +hpages_test=8 + +# +# Get count of free huge pages from /proc/meminfo +# +while read name size unit; do + if [ "$name" = "HugePages_Free:" ]; then + freepgs=$size + fi +done < /proc/meminfo + +# +# If not enough free huge pages for test, attempt to increase +# +if [ -n "$freepgs" ] && [ $freepgs -lt $hpages_test ]; then + nr_hugepgs=`cat /proc/sys/vm/nr_hugepages` + hpages_needed=`expr $hpages_test - $freepgs` + + if [ $UID != 0 ]; then + echo "Please run memfd with hugetlbfs test as root" + exit $ksft_skip + fi + + echo 3 > /proc/sys/vm/drop_caches + echo $(( $hpages_needed + $nr_hugepgs )) > /proc/sys/vm/nr_hugepages + while read name size unit; do + if [ "$name" = "HugePages_Free:" ]; then + freepgs=$size + fi + done < /proc/meminfo +fi + +# +# If still not enough huge pages available, exit. But, give back any huge +# pages potentially allocated above. +# +if [ $freepgs -lt $hpages_test ]; then + # nr_hugepgs non-zero only if we attempted to increase + if [ -n "$nr_hugepgs" ]; then + echo $nr_hugepgs > /proc/sys/vm/nr_hugepages + fi + printf "Not enough huge pages available (%d < %d)\n" \ + $freepgs $needpgs + exit $ksft_skip +fi + +# +# Run the hugetlbfs test +# +./memfd_test hugetlbfs +./run_fuse_test.sh hugetlbfs + +# +# Give back any huge pages allocated for the test +# +if [ -n "$nr_hugepgs" ]; then + echo $nr_hugepgs > /proc/sys/vm/nr_hugepages +fi diff --git a/tools/testing/selftests/memfd/run_tests.sh b/tools/testing/selftests/memfd/run_tests.sh deleted file mode 100755 index 2013f195e623..000000000000 --- a/tools/testing/selftests/memfd/run_tests.sh +++ /dev/null @@ -1,74 +0,0 @@ -#!/bin/bash -# please run as root - -# Kselftest framework requirement - SKIP code is 4. -ksft_skip=4 - -# -# Normal tests requiring no special resources -# -./run_fuse_test.sh -./memfd_test - -# -# To test memfd_create with hugetlbfs, there needs to be hpages_test -# huge pages free. Attempt to allocate enough pages to test. -# -hpages_test=8 - -# -# Get count of free huge pages from /proc/meminfo -# -while read name size unit; do - if [ "$name" = "HugePages_Free:" ]; then - freepgs=$size - fi -done < /proc/meminfo - -# -# If not enough free huge pages for test, attempt to increase -# -if [ -n "$freepgs" ] && [ $freepgs -lt $hpages_test ]; then - nr_hugepgs=`cat /proc/sys/vm/nr_hugepages` - hpages_needed=`expr $hpages_test - $freepgs` - - if [ $UID != 0 ]; then - echo "Please run memfd with hugetlbfs test as root" - exit $ksft_skip - fi - - echo 3 > /proc/sys/vm/drop_caches - echo $(( $hpages_needed + $nr_hugepgs )) > /proc/sys/vm/nr_hugepages - while read name size unit; do - if [ "$name" = "HugePages_Free:" ]; then - freepgs=$size - fi - done < /proc/meminfo -fi - -# -# If still not enough huge pages available, exit. But, give back any huge -# pages potentially allocated above. -# -if [ $freepgs -lt $hpages_test ]; then - # nr_hugepgs non-zero only if we attempted to increase - if [ -n "$nr_hugepgs" ]; then - echo $nr_hugepgs > /proc/sys/vm/nr_hugepages - fi - printf "Not enough huge pages available (%d < %d)\n" \ - $freepgs $needpgs - exit $ksft_skip -fi - -# -# Run the hugetlbfs test -# -./memfd_test hugetlbfs -./run_fuse_test.sh hugetlbfs - -# -# Give back any huge pages allocated for the test -# -if [ -n "$nr_hugepgs" ]; then - echo $nr_hugepgs > /proc/sys/vm/nr_hugepages -fi -- cgit v1.2.3-59-g8ed1b