From: Stanislav K. <sta...@or...> - 2014-03-27 14:23:13
|
Hi. The difference from V2 is that now, according to a Mike Frysinger tip, we execute `losetup -d` with LC_ALL=C set. Thank you. |
From: Stanislav K. <sta...@or...> - 2014-03-27 14:23:14
|
Signed-off-by: Stanislav Kholmanskikh <sta...@or...> --- testscripts/isofs.sh | 165 ++++++++++++++++++++----------------------------- 1 files changed, 67 insertions(+), 98 deletions(-) diff --git a/testscripts/isofs.sh b/testscripts/isofs.sh index e6a3b09..ec1f2fc 100755 --- a/testscripts/isofs.sh +++ b/testscripts/isofs.sh @@ -1,91 +1,64 @@ -#!/bin/bash - - -############################################################## -# -# Copyright (c) International Business Machines Corp., 2003 -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. +#!/bin/sh # -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See -# the GNU General Public License for more details. +# Copyright (c) International Business Machines Corp., 2003 # -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. # -# FILE : isofs.sh -# USAGE : isofs.sh <optional> -n (no clean up) +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # -# DESCRIPTION : A script that will test isofs on Linux system. -# It makes ISO9660 file system with different options and also -# mounts the ISO9660 file system with different mount options. +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. # -# REQUIREMENTS: +# Written by Prakash Narayana (pra...@us...) +# and Michael Reed (mr...@us...) # -# HISTORY : -# 06/27/2003 Prakash Narayana (pra...@us...) -# 07/28/2005 Michael Reed (mr...@us...) -# - Changed the directory where the filesytems were being created -# from /etc to copying /etc to /tmp/for_isofs_test/etc and -# creating the file systems there -# - Added the -n option to not remove the directories created for -# debugging purposes -# - Added -d option to specify a different directory to copy to /tmp -# to make the file system +# A script that will test isofs on Linux system. +# It makes ISO9660 file system with different options and also +# mounts the ISO9660 file system with different mount options. # -# CODE COVERAGE: 40.5% - fs/isofs (Total Coverage) -# -# 23.7% - fs/isofs/dir.c -# 46.0% - fs/isofs/inode.c -# 22.9% - fs/isofs/joliet.c -# 50.0% - fs/isofs/namei.c -# 38.5% - fs/isofs/rock.c -# 10.7% - fs/isofs/util.c -# -############################################################## USAGE="$0" NO_CLEANUP="" - usage() - { - echo "USAGE: $USAGE <optional> -n -h -d [directory name]" - exit - } +usage() +{ + echo "USAGE: $USAGE <optional> -n -h -d [directory name]" + exit +} #Initialize directory variables - MNT_POINT="/tmp/isofs_$$" - COPY_DIR="/etc/" - TEMP_DIR="/tmp/for_isofs_test" - MAKE_FILE_SYS_DIR=$TEMP_DIR$COPY_DIR - - while getopts :hnd: arg - do case $arg in - d) - COPY_DIR=$OPTARG - MAKE_FILE_SYS_DIR="/tmp/for_isofs_test"$COPY_DIR - ;; - h) - echo "" - echo "n - The directories created will not be removed" - echo "d - Specify a directory to copy into /tmp" - echo "h - Help options" - echo "" - usage - echo "" - ;; - n) - NO_CLEANUP="no" - ;; - esac - done - +MNT_POINT="/tmp/isofs_$$" +COPY_DIR="/etc/" +TEMP_DIR="/tmp/for_isofs_test" +MAKE_FILE_SYS_DIR=$TEMP_DIR$COPY_DIR + +while getopts :hnd: arg; do + case $arg in + d) + COPY_DIR=$OPTARG + MAKE_FILE_SYS_DIR="/tmp/for_isofs_test"$COPY_DIR + ;; + h) + echo "" + echo "n - The directories created will not be removed" + echo "d - Specify a directory to copy into /tmp" + echo "h - Help options" + echo "" + usage + echo "" + ;; + n) + NO_CLEANUP="no" + ;; + esac +done ############################################################## # @@ -100,22 +73,19 @@ then exit 1 fi - - mkdir -p -m 777 $MNT_POINT - mkdir -p $MAKE_FILE_SYS_DIR - - - if [ -e "$COPY_DIR" ]; then - cp -rf $COPY_DIR* $MAKE_FILE_SYS_DIR - else - echo "$COPY_DIR not found" - echo "use the -d option to copy a different directory into" - echo "/tmp to makethe ISO9660 file system with different" - echo "options" - usage - fi +mkdir -p -m 777 $MNT_POINT +mkdir -p $MAKE_FILE_SYS_DIR +if [ -e "$COPY_DIR" ]; then + cp -rf $COPY_DIR* $MAKE_FILE_SYS_DIR +else + echo "$COPY_DIR not found" + echo "use the -d option to copy a different directory into" + echo "/tmp to makethe ISO9660 file system with different" + echo "options" + usage +fi # Make ISO9660 file system with different options. # Mount the ISO9660 file system with different mount options. @@ -129,7 +99,7 @@ for mkisofs_opt in \ "-f -l -D -J -L -R" \ "-allow-lowercase -allow-multidot -iso-level 3 -f -l -D -J -L -R" do - echo "Running mkisofs -o isofs.iso -quiet $mkisofs_opt $MAKE_FILE_SYS_DIR Command" + echo "Running mkisofs -o isofs.iso -quiet $mkisofs_opt $MAKE_FILE_SYS_DIR Command" mkisofs -o isofs.iso -quiet $mkisofs_opt $MAKE_FILE_SYS_DIR if [ $? != 0 ] then @@ -173,14 +143,13 @@ done # ####################################################### - if [ "$NO_CLEANUP" == "no" ]; then - echo "$MAKE_FILE_SYS_DIR and $MNT_POINT were not removed" - echo "These directories will have to be removed manually" - else - rm -rf $TEMP_DIR - rm -rf $MNT_POINT - fi - +if [ "$NO_CLEANUP" == "no" ]; then + echo "$MAKE_FILE_SYS_DIR and $MNT_POINT were not removed" + echo "These directories will have to be removed manually" +else + rm -rf $TEMP_DIR + rm -rf $MNT_POINT +fi echo "PASSED: $0 passed!" exit 0 -- 1.7.1 |
From: Stanislav K. <sta...@or...> - 2014-03-27 14:23:14
|
Signed-off-by: Stanislav Kholmanskikh <sta...@or...> --- testscripts/isofs.sh | 105 ++++++++++++++++++++++--------------------------- 1 files changed, 47 insertions(+), 58 deletions(-) diff --git a/testscripts/isofs.sh b/testscripts/isofs.sh index ec1f2fc..2bb2555 100755 --- a/testscripts/isofs.sh +++ b/testscripts/isofs.sh @@ -24,26 +24,34 @@ # mounts the ISO9660 file system with different mount options. # -USAGE="$0" +TCID=isofs +TST_TOTAL=77 +. test.sh + NO_CLEANUP="" usage() { - echo "USAGE: $USAGE <optional> -n -h -d [directory name]" + echo "USAGE: $0 <optional> -n -h -d [directory name]" exit } -#Initialize directory variables -MNT_POINT="/tmp/isofs_$$" +cleanup() +{ + if [ "$NO_CLEANUP" = "no" ]; then + tst_resm TINFO "Temporary directory $PWD was not removed" + else + tst_rmdir + fi +} + + COPY_DIR="/etc/" -TEMP_DIR="/tmp/for_isofs_test" -MAKE_FILE_SYS_DIR=$TEMP_DIR$COPY_DIR while getopts :hnd: arg; do case $arg in d) COPY_DIR=$OPTARG - MAKE_FILE_SYS_DIR="/tmp/for_isofs_test"$COPY_DIR ;; h) echo "" @@ -60,32 +68,22 @@ while getopts :hnd: arg; do esac done -############################################################## -# -# Make sure that uid=root is running this script. -# Validate the command line arguments. -# -############################################################## - -if [ $UID != 0 ] -then - echo "FAILED: Must have root access to execute this script" - exit 1 +if [ ! -e "$COPY_DIR" ]; then + tst_brkm TCONF "$COPY_DIR not found" fi +tst_require_root + +tst_tmpdir +TST_CLEANUP=cleanup + +MNT_POINT="$PWD/mnt" +MAKE_FILE_SYS_DIR="$PWD/tmp/$COPY_DIR" + mkdir -p -m 777 $MNT_POINT mkdir -p $MAKE_FILE_SYS_DIR - -if [ -e "$COPY_DIR" ]; then - cp -rf $COPY_DIR* $MAKE_FILE_SYS_DIR -else - echo "$COPY_DIR not found" - echo "use the -d option to copy a different directory into" - echo "/tmp to makethe ISO9660 file system with different" - echo "options" - usage -fi +cp -rf $COPY_DIR* $MAKE_FILE_SYS_DIR # Make ISO9660 file system with different options. # Mount the ISO9660 file system with different mount options. @@ -99,14 +97,17 @@ for mkisofs_opt in \ "-f -l -D -J -L -R" \ "-allow-lowercase -allow-multidot -iso-level 3 -f -l -D -J -L -R" do - echo "Running mkisofs -o isofs.iso -quiet $mkisofs_opt $MAKE_FILE_SYS_DIR Command" + rm -f isofs.iso mkisofs -o isofs.iso -quiet $mkisofs_opt $MAKE_FILE_SYS_DIR - if [ $? != 0 ] - then - rm -rf isofs.iso $MNT_POINT - echo "FAILED: mkisofs -o isofs.iso $mkisofs_opt $MAKE_FILE_SYS_DIR failed" - exit 1 + if [ $? -eq 0 ]; then + tst_resm TPASS \ + "mkisofs -o isofs.iso -quiet $mkisofs_opt $MAKE_FILE_SYS_DIR" + else + tst_resm TFAIL \ + tst_resm TFAIL "mkisofs -o isofs.iso -quiet $mkisofs_opt $MAKE_FILE_SYS_DIR" + continue fi + for mount_opt in \ "loop" \ "loop,norock" \ @@ -120,36 +121,24 @@ do "loop,block=512,unhide,session=2" # "loop,sbsector=32" do - echo "Running mount -o $mount_opt isofs.iso $MNT_POINT Command" mount -t iso9660 -o $mount_opt isofs.iso $MNT_POINT - if [ $? != 0 ] - then - rm -rf isofs.iso $MNT_POINT - echo "FAILED: mount -t iso9660 -o $mount_opt isofs.iso $MNT_POINT failed" - exit 1 + if [ $? -ne 0 ]; then + tst_resm TFAIL \ + "mount -t iso9660 -o $mount_opt isofs.iso $MNT_POINT" + continue fi - echo "Running ls -lR $MNT_POINT Command" + ls -lR $MNT_POINT exportfs -i -o no_root_squash,rw *:$MNT_POINT exportfs -u :$MNT_POINT + umount $MNT_POINT + if [ $? -ne 0 ]; then + tst_resm TFAIL "umount $MNT_POINT" + fi + + tst_resm TPASS "mount/umount with \"$mount_opt\" options" done - rm -rf isofs.iso done -####################################################### -# -# Just before exit, perform the cleanup. -# -####################################################### - -if [ "$NO_CLEANUP" == "no" ]; then - echo "$MAKE_FILE_SYS_DIR and $MNT_POINT were not removed" - echo "These directories will have to be removed manually" -else - rm -rf $TEMP_DIR - rm -rf $MNT_POINT -fi - -echo "PASSED: $0 passed!" -exit 0 +tst_exit -- 1.7.1 |
From: Stanislav K. <sta...@or...> - 2014-03-27 14:23:16
|
I suppose that neither `ls -lR` nor `exportfs` has any direct relationship to this test. Therefore I removed them to make the test more silent. But destroying of a loop device is an asynchronous operation (see a1ecac3b0656a68259927c234e505804d33a7b83) and so on we need to be sure that the device is destroyed before creating a new one. To accomplish this I changed the test to use `losetup -f` and `losetup -d` explicitly. Signed-off-by: Stanislav Kholmanskikh <sta...@or...> --- testscripts/isofs.sh | 52 +++++++++++++++++++++++++++++++------------------ 1 files changed, 33 insertions(+), 19 deletions(-) diff --git a/testscripts/isofs.sh b/testscripts/isofs.sh index 2bb2555..294d6f0 100755 --- a/testscripts/isofs.sh +++ b/testscripts/isofs.sh @@ -1,6 +1,7 @@ #!/bin/sh # # Copyright (c) International Business Machines Corp., 2003 +# Copyright (c) 2014 Oracle and/or its affiliates. All Rights Reserved. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -29,6 +30,7 @@ TST_TOTAL=77 . test.sh NO_CLEANUP="" +IS_MOUNTED="" usage() { @@ -41,7 +43,7 @@ cleanup() if [ "$NO_CLEANUP" = "no" ]; then tst_resm TINFO "Temporary directory $PWD was not removed" else - tst_rmdir + [ "$IS_MOUNTED" != "yes" ] && tst_rmdir fi } @@ -98,7 +100,7 @@ for mkisofs_opt in \ "-allow-lowercase -allow-multidot -iso-level 3 -f -l -D -J -L -R" do rm -f isofs.iso - mkisofs -o isofs.iso -quiet $mkisofs_opt $MAKE_FILE_SYS_DIR + mkisofs -o isofs.iso -quiet $mkisofs_opt $MAKE_FILE_SYS_DIR 2> /dev/null if [ $? -eq 0 ]; then tst_resm TPASS \ "mkisofs -o isofs.iso -quiet $mkisofs_opt $MAKE_FILE_SYS_DIR" @@ -109,33 +111,45 @@ do fi for mount_opt in \ - "loop" \ - "loop,norock" \ - "loop,nojoliet" \ - "loop,block=512,unhide" \ - "loop,block=1024,cruft" \ - "loop,block=2048,nocompress" \ - "loop,check=strict,map=off,gid=bin,uid=bin" \ - "loop,check=strict,map=acorn,gid=bin,uid=bin" \ - "loop,check=relaxed,map=normal" \ - "loop,block=512,unhide,session=2" - # "loop,sbsector=32" + "ro" \ + "norock" \ + "nojoliet" \ + "block=512,unhide" \ + "block=1024,cruft" \ + "block=2048,nocompress" \ + "check=strict,map=off,gid=bin,uid=bin" \ + "check=strict,map=acorn,gid=bin,uid=bin" \ + "check=relaxed,map=normal" \ + "block=512,unhide,session=2" + # "sbsector=32" do - mount -t iso9660 -o $mount_opt isofs.iso $MNT_POINT + loop_dev=$(losetup --show -f isofs.iso) + if [ $? -ne 0 ]; then + tst_brkm TBROK "losetup failed" + fi + + mount -t iso9660 -o $mount_opt "$loop_dev" $MNT_POINT if [ $? -ne 0 ]; then tst_resm TFAIL \ - "mount -t iso9660 -o $mount_opt isofs.iso $MNT_POINT" + "mount -t iso9660 -o $mount_opt "$loop_dev" $MNT_POINT" continue fi - - ls -lR $MNT_POINT - exportfs -i -o no_root_squash,rw *:$MNT_POINT - exportfs -u :$MNT_POINT + IS_MOUNTED="yes" umount $MNT_POINT if [ $? -ne 0 ]; then tst_resm TFAIL "umount $MNT_POINT" fi + IS_MOUNTED="no" + + # Now tearing down the loopback device + while /bin/true; do + out=$(LC_ALL=C losetup -d "$loop_dev" 2>&1) + + if echo "$out" | grep -q -i "No such device"; then + break + fi + done tst_resm TPASS "mount/umount with \"$mount_opt\" options" done -- 1.7.1 |
From: Stanislav K. <sta...@or...> - 2014-03-27 14:23:17
|
Script isofs.sh looks like a not bad candidate for testing an iso9660 file system. Therefore moved it into a separate directory and declared a new test case entry in runtest/fs. Signed-off-by: Stanislav Kholmanskikh <sta...@or...> --- runtest/fs | 2 + testcases/kernel/fs/iso9660/Makefile | 26 ++++++ testcases/kernel/fs/iso9660/isofs.sh | 158 ++++++++++++++++++++++++++++++++++ testscripts/isofs.sh | 158 ---------------------------------- 4 files changed, 186 insertions(+), 158 deletions(-) create mode 100644 testcases/kernel/fs/iso9660/Makefile create mode 100755 testcases/kernel/fs/iso9660/isofs.sh delete mode 100755 testscripts/isofs.sh diff --git a/runtest/fs b/runtest/fs index 438c79c..33a8412 100644 --- a/runtest/fs +++ b/runtest/fs @@ -74,3 +74,5 @@ fs_racer fs_racer.sh -t 5 #Run the Quota Remount Test introduced in linux-2.6.26 quota_remount_test01 quota_remount_test01.sh + +isofs isofs.sh diff --git a/testcases/kernel/fs/iso9660/Makefile b/testcases/kernel/fs/iso9660/Makefile new file mode 100644 index 0000000..459b3a4 --- /dev/null +++ b/testcases/kernel/fs/iso9660/Makefile @@ -0,0 +1,26 @@ +# +# Copyright (c) 2005-2014 Linux Test Project +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See +# the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +# + +top_srcdir ?= ../../../.. + +include $(top_srcdir)/include/mk/testcases.mk + +MAKE_TARGETS := +INSTALL_TARGETS := isofs.sh + +include $(top_srcdir)/include/mk/generic_leaf_target.mk diff --git a/testcases/kernel/fs/iso9660/isofs.sh b/testcases/kernel/fs/iso9660/isofs.sh new file mode 100755 index 0000000..294d6f0 --- /dev/null +++ b/testcases/kernel/fs/iso9660/isofs.sh @@ -0,0 +1,158 @@ +#!/bin/sh +# +# Copyright (c) International Business Machines Corp., 2003 +# Copyright (c) 2014 Oracle and/or its affiliates. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Written by Prakash Narayana (pra...@us...) +# and Michael Reed (mr...@us...) +# +# A script that will test isofs on Linux system. +# It makes ISO9660 file system with different options and also +# mounts the ISO9660 file system with different mount options. +# + +TCID=isofs +TST_TOTAL=77 +. test.sh + +NO_CLEANUP="" +IS_MOUNTED="" + +usage() +{ + echo "USAGE: $0 <optional> -n -h -d [directory name]" + exit +} + +cleanup() +{ + if [ "$NO_CLEANUP" = "no" ]; then + tst_resm TINFO "Temporary directory $PWD was not removed" + else + [ "$IS_MOUNTED" != "yes" ] && tst_rmdir + fi +} + + +COPY_DIR="/etc/" + +while getopts :hnd: arg; do + case $arg in + d) + COPY_DIR=$OPTARG + ;; + h) + echo "" + echo "n - The directories created will not be removed" + echo "d - Specify a directory to copy into /tmp" + echo "h - Help options" + echo "" + usage + echo "" + ;; + n) + NO_CLEANUP="no" + ;; + esac +done + +if [ ! -e "$COPY_DIR" ]; then + tst_brkm TCONF "$COPY_DIR not found" +fi + +tst_require_root + +tst_tmpdir +TST_CLEANUP=cleanup + +MNT_POINT="$PWD/mnt" +MAKE_FILE_SYS_DIR="$PWD/tmp/$COPY_DIR" + +mkdir -p -m 777 $MNT_POINT +mkdir -p $MAKE_FILE_SYS_DIR + +cp -rf $COPY_DIR* $MAKE_FILE_SYS_DIR + +# Make ISO9660 file system with different options. +# Mount the ISO9660 file system with different mount options. + +for mkisofs_opt in \ + " " \ + "-J" \ + "-hfs -D" \ + " -R " \ + "-R -J" \ + "-f -l -D -J -L -R" \ + "-allow-lowercase -allow-multidot -iso-level 3 -f -l -D -J -L -R" +do + rm -f isofs.iso + mkisofs -o isofs.iso -quiet $mkisofs_opt $MAKE_FILE_SYS_DIR 2> /dev/null + if [ $? -eq 0 ]; then + tst_resm TPASS \ + "mkisofs -o isofs.iso -quiet $mkisofs_opt $MAKE_FILE_SYS_DIR" + else + tst_resm TFAIL \ + tst_resm TFAIL "mkisofs -o isofs.iso -quiet $mkisofs_opt $MAKE_FILE_SYS_DIR" + continue + fi + + for mount_opt in \ + "ro" \ + "norock" \ + "nojoliet" \ + "block=512,unhide" \ + "block=1024,cruft" \ + "block=2048,nocompress" \ + "check=strict,map=off,gid=bin,uid=bin" \ + "check=strict,map=acorn,gid=bin,uid=bin" \ + "check=relaxed,map=normal" \ + "block=512,unhide,session=2" + # "sbsector=32" + do + loop_dev=$(losetup --show -f isofs.iso) + if [ $? -ne 0 ]; then + tst_brkm TBROK "losetup failed" + fi + + mount -t iso9660 -o $mount_opt "$loop_dev" $MNT_POINT + if [ $? -ne 0 ]; then + tst_resm TFAIL \ + "mount -t iso9660 -o $mount_opt "$loop_dev" $MNT_POINT" + continue + fi + IS_MOUNTED="yes" + + umount $MNT_POINT + if [ $? -ne 0 ]; then + tst_resm TFAIL "umount $MNT_POINT" + fi + IS_MOUNTED="no" + + # Now tearing down the loopback device + while /bin/true; do + out=$(LC_ALL=C losetup -d "$loop_dev" 2>&1) + + if echo "$out" | grep -q -i "No such device"; then + break + fi + done + + tst_resm TPASS "mount/umount with \"$mount_opt\" options" + done +done + +tst_exit diff --git a/testscripts/isofs.sh b/testscripts/isofs.sh deleted file mode 100755 index 294d6f0..0000000 --- a/testscripts/isofs.sh +++ /dev/null @@ -1,158 +0,0 @@ -#!/bin/sh -# -# Copyright (c) International Business Machines Corp., 2003 -# Copyright (c) 2014 Oracle and/or its affiliates. All Rights Reserved. -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along -# with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Written by Prakash Narayana (pra...@us...) -# and Michael Reed (mr...@us...) -# -# A script that will test isofs on Linux system. -# It makes ISO9660 file system with different options and also -# mounts the ISO9660 file system with different mount options. -# - -TCID=isofs -TST_TOTAL=77 -. test.sh - -NO_CLEANUP="" -IS_MOUNTED="" - -usage() -{ - echo "USAGE: $0 <optional> -n -h -d [directory name]" - exit -} - -cleanup() -{ - if [ "$NO_CLEANUP" = "no" ]; then - tst_resm TINFO "Temporary directory $PWD was not removed" - else - [ "$IS_MOUNTED" != "yes" ] && tst_rmdir - fi -} - - -COPY_DIR="/etc/" - -while getopts :hnd: arg; do - case $arg in - d) - COPY_DIR=$OPTARG - ;; - h) - echo "" - echo "n - The directories created will not be removed" - echo "d - Specify a directory to copy into /tmp" - echo "h - Help options" - echo "" - usage - echo "" - ;; - n) - NO_CLEANUP="no" - ;; - esac -done - -if [ ! -e "$COPY_DIR" ]; then - tst_brkm TCONF "$COPY_DIR not found" -fi - -tst_require_root - -tst_tmpdir -TST_CLEANUP=cleanup - -MNT_POINT="$PWD/mnt" -MAKE_FILE_SYS_DIR="$PWD/tmp/$COPY_DIR" - -mkdir -p -m 777 $MNT_POINT -mkdir -p $MAKE_FILE_SYS_DIR - -cp -rf $COPY_DIR* $MAKE_FILE_SYS_DIR - -# Make ISO9660 file system with different options. -# Mount the ISO9660 file system with different mount options. - -for mkisofs_opt in \ - " " \ - "-J" \ - "-hfs -D" \ - " -R " \ - "-R -J" \ - "-f -l -D -J -L -R" \ - "-allow-lowercase -allow-multidot -iso-level 3 -f -l -D -J -L -R" -do - rm -f isofs.iso - mkisofs -o isofs.iso -quiet $mkisofs_opt $MAKE_FILE_SYS_DIR 2> /dev/null - if [ $? -eq 0 ]; then - tst_resm TPASS \ - "mkisofs -o isofs.iso -quiet $mkisofs_opt $MAKE_FILE_SYS_DIR" - else - tst_resm TFAIL \ - tst_resm TFAIL "mkisofs -o isofs.iso -quiet $mkisofs_opt $MAKE_FILE_SYS_DIR" - continue - fi - - for mount_opt in \ - "ro" \ - "norock" \ - "nojoliet" \ - "block=512,unhide" \ - "block=1024,cruft" \ - "block=2048,nocompress" \ - "check=strict,map=off,gid=bin,uid=bin" \ - "check=strict,map=acorn,gid=bin,uid=bin" \ - "check=relaxed,map=normal" \ - "block=512,unhide,session=2" - # "sbsector=32" - do - loop_dev=$(losetup --show -f isofs.iso) - if [ $? -ne 0 ]; then - tst_brkm TBROK "losetup failed" - fi - - mount -t iso9660 -o $mount_opt "$loop_dev" $MNT_POINT - if [ $? -ne 0 ]; then - tst_resm TFAIL \ - "mount -t iso9660 -o $mount_opt "$loop_dev" $MNT_POINT" - continue - fi - IS_MOUNTED="yes" - - umount $MNT_POINT - if [ $? -ne 0 ]; then - tst_resm TFAIL "umount $MNT_POINT" - fi - IS_MOUNTED="no" - - # Now tearing down the loopback device - while /bin/true; do - out=$(LC_ALL=C losetup -d "$loop_dev" 2>&1) - - if echo "$out" | grep -q -i "No such device"; then - break - fi - done - - tst_resm TPASS "mount/umount with \"$mount_opt\" options" - done -done - -tst_exit -- 1.7.1 |
From: <ch...@su...> - 2014-04-29 15:29:55
|
Hi! > I suppose that neither `ls -lR` nor `exportfs` has any direct > relationship to this test. Therefore I removed them to make the test > more silent. Giving it a second though it may. Because if you just mount and unmout the device the kernel code coverage is likely much smaller. What about we list all files on the device and redirect the output to /dev/null and check for the ls exit value? We may even run a find that cats all files into /dev/null or similar so we stress the filesystem code a bit. > But destroying of a loop device is an asynchronous operation > (see a1ecac3b0656a68259927c234e505804d33a7b83) and so on we > need to be sure that the device is destroyed before creating a new one. > > To accomplish this I changed the test to use `losetup -f` and > `losetup -d` explicitly. > > Signed-off-by: Stanislav Kholmanskikh <sta...@or...> > --- > testscripts/isofs.sh | 52 +++++++++++++++++++++++++++++++------------------ > 1 files changed, 33 insertions(+), 19 deletions(-) > > diff --git a/testscripts/isofs.sh b/testscripts/isofs.sh > index 2bb2555..294d6f0 100755 > --- a/testscripts/isofs.sh > +++ b/testscripts/isofs.sh > @@ -1,6 +1,7 @@ > #!/bin/sh > # > # Copyright (c) International Business Machines Corp., 2003 > +# Copyright (c) 2014 Oracle and/or its affiliates. All Rights Reserved. > # > # This program is free software; you can redistribute it and/or modify > # it under the terms of the GNU General Public License as published by > @@ -29,6 +30,7 @@ TST_TOTAL=77 > . test.sh > > NO_CLEANUP="" > +IS_MOUNTED="" > > usage() > { > @@ -41,7 +43,7 @@ cleanup() > if [ "$NO_CLEANUP" = "no" ]; then > tst_resm TINFO "Temporary directory $PWD was not removed" > else > - tst_rmdir > + [ "$IS_MOUNTED" != "yes" ] && tst_rmdir > fi > } > > @@ -98,7 +100,7 @@ for mkisofs_opt in \ > "-allow-lowercase -allow-multidot -iso-level 3 -f -l -D -J -L -R" > do > rm -f isofs.iso > - mkisofs -o isofs.iso -quiet $mkisofs_opt $MAKE_FILE_SYS_DIR > + mkisofs -o isofs.iso -quiet $mkisofs_opt $MAKE_FILE_SYS_DIR 2> /dev/null > if [ $? -eq 0 ]; then > tst_resm TPASS \ > "mkisofs -o isofs.iso -quiet $mkisofs_opt $MAKE_FILE_SYS_DIR" > @@ -109,33 +111,45 @@ do > fi > > for mount_opt in \ > - "loop" \ > - "loop,norock" \ > - "loop,nojoliet" \ > - "loop,block=512,unhide" \ > - "loop,block=1024,cruft" \ > - "loop,block=2048,nocompress" \ > - "loop,check=strict,map=off,gid=bin,uid=bin" \ > - "loop,check=strict,map=acorn,gid=bin,uid=bin" \ > - "loop,check=relaxed,map=normal" \ > - "loop,block=512,unhide,session=2" > - # "loop,sbsector=32" > + "ro" \ > + "norock" \ > + "nojoliet" \ > + "block=512,unhide" \ > + "block=1024,cruft" \ > + "block=2048,nocompress" \ > + "check=strict,map=off,gid=bin,uid=bin" \ > + "check=strict,map=acorn,gid=bin,uid=bin" \ > + "check=relaxed,map=normal" \ > + "block=512,unhide,session=2" > + # "sbsector=32" > do > - mount -t iso9660 -o $mount_opt isofs.iso $MNT_POINT > + loop_dev=$(losetup --show -f isofs.iso) > + if [ $? -ne 0 ]; then > + tst_brkm TBROK "losetup failed" > + fi > + > + mount -t iso9660 -o $mount_opt "$loop_dev" $MNT_POINT > if [ $? -ne 0 ]; then > tst_resm TFAIL \ > - "mount -t iso9660 -o $mount_opt isofs.iso $MNT_POINT" > + "mount -t iso9660 -o $mount_opt "$loop_dev" $MNT_POINT" > continue > fi > - > - ls -lR $MNT_POINT > - exportfs -i -o no_root_squash,rw *:$MNT_POINT > - exportfs -u :$MNT_POINT > + IS_MOUNTED="yes" > > umount $MNT_POINT > if [ $? -ne 0 ]; then > tst_resm TFAIL "umount $MNT_POINT" > fi > + IS_MOUNTED="no" Looking at this part of code, is there chance that we get to cleanup with IS_MOUNTED set to yes? > + > + # Now tearing down the loopback device > + while /bin/true; do Why the absolute path to true? And perhaps we should limit the number of tries to some arbitrary limit here 1000 or so. > + out=$(LC_ALL=C losetup -d "$loop_dev" 2>&1) > + > + if echo "$out" | grep -q -i "No such device"; then > + break > + fi > + done > > tst_resm TPASS "mount/umount with \"$mount_opt\" options" > done -- Cyril Hrubis ch...@su... |
From: <ch...@su...> - 2014-04-29 15:30:55
|
Hi! The rest of the patches looks OK to me. -- Cyril Hrubis ch...@su... |
From: Stanislav K. <sta...@or...> - 2014-05-06 11:32:02
|
On 04/29/2014 07:29 PM, ch...@su... wrote: > Hi! Hi! Thank you for review. >> I suppose that neither `ls -lR` nor `exportfs` has any direct >> relationship to this test. Therefore I removed them to make the test >> more silent. > > Giving it a second though it may. Because if you just mount and unmout > the device the kernel code coverage is likely much smaller. > > What about we list all files on the device and redirect the output to > /dev/null and check for the ls exit value? In this case most of the changes introduced by this patch are not needed at all:) So the final one would be something like this: diff --git a/testscripts/isofs.sh b/testscripts/isofs.sh index 2bb2555..1f69928 100755 --- a/testscripts/isofs.sh +++ b/testscripts/isofs.sh @@ -98,7 +98,7 @@ for mkisofs_opt in \ "-allow-lowercase -allow-multidot -iso-level 3 -f -l -D -J -L -R" do rm -f isofs.iso - mkisofs -o isofs.iso -quiet $mkisofs_opt $MAKE_FILE_SYS_DIR + mkisofs -o isofs.iso -quiet $mkisofs_opt $MAKE_FILE_SYS_DIR 2> /dev/null if [ $? -eq 0 ]; then tst_resm TPASS \ "mkisofs -o isofs.iso -quiet $mkisofs_opt $MAKE_FILE_SYS_DIR" @@ -128,9 +128,11 @@ do continue fi - ls -lR $MNT_POINT - exportfs -i -o no_root_squash,rw *:$MNT_POINT - exportfs -u :$MNT_POINT + ls -lR $MNT_POINT > /dev/null + if [ $? -ne 0 ]; then + tst_resm TFAIL "ls -lR $MNT_POINT" + continue + fi umount $MNT_POINT if [ $? -ne 0 ]; then Correct? exportfs always returns 0, so there is no point to execute it at all. > > We may even run a find that cats all files into /dev/null or similar so > we stress the filesystem code a bit. > |
From: <ch...@su...> - 2014-05-06 13:18:50
|
Hi! > > Giving it a second though it may. Because if you just mount and unmout > > the device the kernel code coverage is likely much smaller. > > > > What about we list all files on the device and redirect the output to > > /dev/null and check for the ls exit value? > > In this case most of the changes introduced by this patch are not needed > at all:) > > So the final one would be something like this: > > diff --git a/testscripts/isofs.sh b/testscripts/isofs.sh > index 2bb2555..1f69928 100755 > --- a/testscripts/isofs.sh > +++ b/testscripts/isofs.sh > @@ -98,7 +98,7 @@ for mkisofs_opt in \ > "-allow-lowercase -allow-multidot -iso-level 3 -f -l -D -J -L -R" > do > rm -f isofs.iso > - mkisofs -o isofs.iso -quiet $mkisofs_opt $MAKE_FILE_SYS_DIR > + mkisofs -o isofs.iso -quiet $mkisofs_opt $MAKE_FILE_SYS_DIR 2> > /dev/null > if [ $? -eq 0 ]; then > tst_resm TPASS \ > "mkisofs -o isofs.iso -quiet $mkisofs_opt > $MAKE_FILE_SYS_DIR" > @@ -128,9 +128,11 @@ do > continue > fi > > - ls -lR $MNT_POINT > - exportfs -i -o no_root_squash,rw *:$MNT_POINT > - exportfs -u :$MNT_POINT > + ls -lR $MNT_POINT > /dev/null > + if [ $? -ne 0 ]; then > + tst_resm TFAIL "ls -lR $MNT_POINT" > + continue > + fi > > umount $MNT_POINT > if [ $? -ne 0 ]; then > > Correct? I think that we should try to umount it if the ls has failed too. In reality when ls fails the system would be in inconstistent state and the umount will likely fail too but it would not harm. > exportfs always returns 0, so there is no point to execute it at all. Right. -- Cyril Hrubis ch...@su... |
From: Mike F. <va...@ge...> - 2014-06-16 06:22:16
Attachments:
signature.asc
|
On Thu 27 Mar 2014 18:22:52 Stanislav Kholmanskikh wrote: > +MNT_POINT="/tmp/isofs_$$" > +COPY_DIR="/etc/" > +TEMP_DIR="/tmp/for_isofs_test" > +MAKE_FILE_SYS_DIR=$TEMP_DIR$COPY_DIR not really a new issue, but scripts really should never hardcode paths in /tmp/ or to that dir at all. this is what `mktemp -d` is for. > +if [ "$NO_CLEANUP" == "no" ]; then it is "=" in POSIX, not "==" -mike |
From: Stanislav K. <sta...@or...> - 2014-06-16 12:29:24
|
Hi! On 06/16/2014 10:22 AM, Mike Frysinger wrote: > On Thu 27 Mar 2014 18:22:52 Stanislav Kholmanskikh wrote: >> +MNT_POINT="/tmp/isofs_$$" >> +COPY_DIR="/etc/" >> +TEMP_DIR="/tmp/for_isofs_test" >> +MAKE_FILE_SYS_DIR=$TEMP_DIR$COPY_DIR > > not really a new issue, but scripts really should never hardcode paths in > /tmp/ or to that dir at all. this is what `mktemp -d` is for. > >> +if [ "$NO_CLEANUP" == "no" ]; then > > it is "=" in POSIX, not "==" > -mike > Thank you for review. But both issues are fixed in the next patch in the sequence - "[PATCH V3 2/4] testscripts/isofs.sh: use the new shell interface". |
From: Mike F. <va...@ge...> - 2014-06-16 06:23:18
Attachments:
signature.asc
|
On Thu 27 Mar 2014 18:22:54 Stanislav Kholmanskikh wrote: > + while /bin/true; do do not hard code paths to tools. if you want a dummy loop, do: while :; do ... -mike |
From: Stanislav K. <sta...@or...> - 2014-06-16 12:31:06
|
On 06/16/2014 10:23 AM, Mike Frysinger wrote: > On Thu 27 Mar 2014 18:22:54 Stanislav Kholmanskikh wrote: >> + while /bin/true; do > > do not hard code paths to tools. if you want a dummy loop, do: > while :; do > ... > -mike > Thank you. I think I would change this at the commit time rather than to send the entire set again. Ok? |