Back to home page

OSCL-LXR

 
 

    


0001 #!/bin/bash
0002 # please run as root
0003 
0004 # Kselftest framework requirement - SKIP code is 4.
0005 ksft_skip=4
0006 
0007 #
0008 # To test memfd_create with hugetlbfs, there needs to be hpages_test
0009 # huge pages free.  Attempt to allocate enough pages to test.
0010 #
0011 hpages_test=8
0012 
0013 #
0014 # Get count of free huge pages from /proc/meminfo
0015 #
0016 while read name size unit; do
0017         if [ "$name" = "HugePages_Free:" ]; then
0018                 freepgs=$size
0019         fi
0020 done < /proc/meminfo
0021 
0022 #
0023 # If not enough free huge pages for test, attempt to increase
0024 #
0025 if [ -n "$freepgs" ] && [ $freepgs -lt $hpages_test ]; then
0026         nr_hugepgs=`cat /proc/sys/vm/nr_hugepages`
0027         hpages_needed=`expr $hpages_test - $freepgs`
0028 
0029         if [ $UID != 0 ]; then
0030                 echo "Please run memfd with hugetlbfs test as root"
0031                 exit $ksft_skip
0032         fi
0033 
0034         echo 3 > /proc/sys/vm/drop_caches
0035         echo $(( $hpages_needed + $nr_hugepgs )) > /proc/sys/vm/nr_hugepages
0036         while read name size unit; do
0037                 if [ "$name" = "HugePages_Free:" ]; then
0038                         freepgs=$size
0039                 fi
0040         done < /proc/meminfo
0041 fi
0042 
0043 #
0044 # If still not enough huge pages available, exit.  But, give back any huge
0045 # pages potentially allocated above.
0046 #
0047 if [ $freepgs -lt $hpages_test ]; then
0048         # nr_hugepgs non-zero only if we attempted to increase
0049         if [ -n "$nr_hugepgs" ]; then
0050                 echo $nr_hugepgs > /proc/sys/vm/nr_hugepages
0051         fi
0052         printf "Not enough huge pages available (%d < %d)\n" \
0053                 $freepgs $needpgs
0054         exit $ksft_skip
0055 fi
0056 
0057 #
0058 # Run the hugetlbfs test
0059 #
0060 ./memfd_test hugetlbfs
0061 ./run_fuse_test.sh hugetlbfs
0062 
0063 #
0064 # Give back any huge pages allocated for the test
0065 #
0066 if [ -n "$nr_hugepgs" ]; then
0067         echo $nr_hugepgs > /proc/sys/vm/nr_hugepages
0068 fi