Commit 241ec63a authored by Axel Rasmussen's avatar Axel Rasmussen Committed by akpm

selftests: vm: fix shellcheck warnings in run_vmtests.sh

These might not be issues yet, but they make the script more fragile. 
Also by fixing them we give a better example to future readers, who might
copy/paste or otherwise re-use snippets from our script.

- Use "read -r", since we don't ever want read to be interpreting '\'
  characters as escape sequences...
- Quote variables, to deal with spaces properly.
- Use $() instead of the older and harder-to-nest ``.
- Get rid of superfluous "$" prefixes inside arithmetic $(()).

Link: https://lkml.kernel.org/r/20220421224928.1848230-2-axelrasmussen@google.comSigned-off-by: default avatarAxel Rasmussen <axelrasmussen@google.com>
Cc: Shuah Khan <shuah@kernel.org>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
parent b67bd551
...@@ -9,12 +9,12 @@ mnt=./huge ...@@ -9,12 +9,12 @@ mnt=./huge
exitcode=0 exitcode=0
#get huge pagesize and freepages from /proc/meminfo #get huge pagesize and freepages from /proc/meminfo
while read name size unit; do while read -r name size unit; do
if [ "$name" = "HugePages_Free:" ]; then if [ "$name" = "HugePages_Free:" ]; then
freepgs=$size freepgs="$size"
fi fi
if [ "$name" = "Hugepagesize:" ]; then if [ "$name" = "Hugepagesize:" ]; then
hpgsize_KB=$size hpgsize_KB="$size"
fi fi
done < /proc/meminfo done < /proc/meminfo
...@@ -30,27 +30,26 @@ needmem_KB=$((half_ufd_size_MB * 2 * 1024)) ...@@ -30,27 +30,26 @@ needmem_KB=$((half_ufd_size_MB * 2 * 1024))
#set proper nr_hugepages #set proper nr_hugepages
if [ -n "$freepgs" ] && [ -n "$hpgsize_KB" ]; then if [ -n "$freepgs" ] && [ -n "$hpgsize_KB" ]; then
nr_hugepgs=`cat /proc/sys/vm/nr_hugepages` nr_hugepgs=$(cat /proc/sys/vm/nr_hugepages)
needpgs=$((needmem_KB / hpgsize_KB)) needpgs=$((needmem_KB / hpgsize_KB))
tries=2 tries=2
while [ $tries -gt 0 ] && [ $freepgs -lt $needpgs ]; do while [ "$tries" -gt 0 ] && [ "$freepgs" -lt "$needpgs" ]; do
lackpgs=$(( $needpgs - $freepgs )) lackpgs=$((needpgs - freepgs))
echo 3 > /proc/sys/vm/drop_caches echo 3 > /proc/sys/vm/drop_caches
echo $(( $lackpgs + $nr_hugepgs )) > /proc/sys/vm/nr_hugepages if ! echo $((lackpgs + nr_hugepgs)) > /proc/sys/vm/nr_hugepages; then
if [ $? -ne 0 ]; then
echo "Please run this test as root" echo "Please run this test as root"
exit $ksft_skip exit $ksft_skip
fi fi
while read name size unit; do while read -r name size unit; do
if [ "$name" = "HugePages_Free:" ]; then if [ "$name" = "HugePages_Free:" ]; then
freepgs=$size freepgs=$size
fi fi
done < /proc/meminfo done < /proc/meminfo
tries=$((tries - 1)) tries=$((tries - 1))
done done
if [ $freepgs -lt $needpgs ]; then if [ "$freepgs" -lt "$needpgs" ]; then
printf "Not enough huge pages available (%d < %d)\n" \ printf "Not enough huge pages available (%d < %d)\n" \
$freepgs $needpgs "$freepgs" "$needpgs"
exit 1 exit 1
fi fi
else else
...@@ -60,11 +59,11 @@ fi ...@@ -60,11 +59,11 @@ fi
#filter 64bit architectures #filter 64bit architectures
ARCH64STR="arm64 ia64 mips64 parisc64 ppc64 ppc64le riscv64 s390x sh64 sparc64 x86_64" ARCH64STR="arm64 ia64 mips64 parisc64 ppc64 ppc64le riscv64 s390x sh64 sparc64 x86_64"
if [ -z $ARCH ]; then if [ -z "$ARCH" ]; then
ARCH=`uname -m 2>/dev/null | sed -e 's/aarch64.*/arm64/'` ARCH=$(uname -m 2>/dev/null | sed -e 's/aarch64.*/arm64/')
fi fi
VADDR64=0 VADDR64=0
echo "$ARCH64STR" | grep $ARCH && VADDR64=1 echo "$ARCH64STR" | grep "$ARCH" && VADDR64=1
# Usage: run_test [test binary] [arbitrary test arguments...] # Usage: run_test [test binary] [arbitrary test arguments...]
run_test() { run_test() {
...@@ -85,28 +84,28 @@ run_test() { ...@@ -85,28 +84,28 @@ run_test() {
fi fi
} }
mkdir $mnt mkdir "$mnt"
mount -t hugetlbfs none $mnt mount -t hugetlbfs none "$mnt"
run_test ./hugepage-mmap run_test ./hugepage-mmap
shmmax=`cat /proc/sys/kernel/shmmax` shmmax=$(cat /proc/sys/kernel/shmmax)
shmall=`cat /proc/sys/kernel/shmall` shmall=$(cat /proc/sys/kernel/shmall)
echo 268435456 > /proc/sys/kernel/shmmax echo 268435456 > /proc/sys/kernel/shmmax
echo 4194304 > /proc/sys/kernel/shmall echo 4194304 > /proc/sys/kernel/shmall
run_test ./hugepage-shm run_test ./hugepage-shm
echo $shmmax > /proc/sys/kernel/shmmax echo "$shmmax" > /proc/sys/kernel/shmmax
echo $shmall > /proc/sys/kernel/shmall echo "$shmall" > /proc/sys/kernel/shmall
run_test ./map_hugetlb run_test ./map_hugetlb
run_test ./hugepage-mremap $mnt/huge_mremap run_test ./hugepage-mremap "$mnt"/huge_mremap
rm -f $mnt/huge_mremap rm -f "$mnt"/huge_mremap
run_test ./hugepage-vmemmap run_test ./hugepage-vmemmap
run_test ./hugetlb-madvise $mnt/madvise-test run_test ./hugetlb-madvise "$mnt"/madvise-test
rm -f $mnt/madvise-test rm -f "$mnt"/madvise-test
echo "NOTE: The above hugetlb tests provide minimal coverage. Use" echo "NOTE: The above hugetlb tests provide minimal coverage. Use"
echo " https://github.com/libhugetlbfs/libhugetlbfs.git for" echo " https://github.com/libhugetlbfs/libhugetlbfs.git for"
...@@ -124,13 +123,13 @@ run_test ./gup_test -ct -F 0x1 0 19 0x1000 ...@@ -124,13 +123,13 @@ run_test ./gup_test -ct -F 0x1 0 19 0x1000
run_test ./userfaultfd anon 20 16 run_test ./userfaultfd anon 20 16
# Test requires source and destination huge pages. Size of source # Test requires source and destination huge pages. Size of source
# (half_ufd_size_MB) is passed as argument to test. # (half_ufd_size_MB) is passed as argument to test.
run_test ./userfaultfd hugetlb $half_ufd_size_MB 32 run_test ./userfaultfd hugetlb "$half_ufd_size_MB" 32
run_test ./userfaultfd shmem 20 16 run_test ./userfaultfd shmem 20 16
#cleanup #cleanup
umount $mnt umount "$mnt"
rm -rf $mnt rm -rf "$mnt"
echo $nr_hugepgs > /proc/sys/vm/nr_hugepages echo "$nr_hugepgs" > /proc/sys/vm/nr_hugepages
run_test ./compaction_test run_test ./compaction_test
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment