1 #!/bin/sh 2 # 3 # Copyright (c) International Business Machines Corp., 2003 4 # 5 # This program is free software; you can redistribute it and/or modify 6 # it under the terms of the GNU General Public License as published by 7 # the Free Software Foundation; either version 2 of the License, or 8 # (at your option) any later version. 9 # 10 # This program is distributed in the hope that it will be useful, 11 # but WITHOUT ANY WARRANTY; without even the implied warranty of 12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 # GNU General Public License for more details. 14 # 15 # You should have received a copy of the GNU General Public License along 16 # with this program; if not, write to the Free Software Foundation, Inc., 17 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 18 # 19 # Written by Prakash Narayana (prakashn (at] us.ibm.com) 20 # and Michael Reed (mreed10 (at] us.ibm.com) 21 # 22 # A script that will test isofs on Linux system. 23 # It makes ISO9660 file system with different options and also 24 # mounts the ISO9660 file system with different mount options. 25 # 26 27 TCID=isofs 28 TST_TOTAL=77 29 . test.sh 30 31 NO_CLEANUP="" 32 33 usage() 34 { 35 echo "USAGE: $0 <optional> -n -h" 36 exit 37 } 38 39 cleanup() 40 { 41 if [ "$NO_CLEANUP" = "no" ]; then 42 tst_resm TINFO "Temporary directory $PWD was not removed" 43 else 44 tst_rmdir 45 fi 46 } 47 48 max_depth=3 49 max_dirs=4 50 51 gen_fs_tree() 52 { 53 local cur_path="$1" 54 local cur_depth="$2" 55 56 if [ "$cur_depth" -gt "$max_depth" ]; then 57 return 58 fi 59 60 for i in $(seq 1 $max_dirs); do 61 local new_path="$cur_path/subdir_$i" 62 63 mkdir -p "$new_path" 64 65 dd if=/dev/urandom of="$new_path/file" bs=1024 count=100 >/dev/null 2>&1 66 67 gen_fs_tree "$new_path" $((cur_depth + 1)) 68 done 69 } 70 71 while getopts :hnd: arg; do 72 case $arg in 73 h) 74 echo "" 75 echo "n - The directories created will not be removed" 76 echo "h - Help options" 77 echo "" 78 usage 79 echo "" 80 ;; 81 n) 82 NO_CLEANUP="no" 83 ;; 84 esac 85 done 86 87 tst_require_root 88 89 tst_tmpdir 90 TST_CLEANUP=cleanup 91 92 MNT_POINT="$PWD/mnt" 93 MAKE_FILE_SYS_DIR="$PWD/files" 94 95 mkdir -p -m 777 $MNT_POINT 96 mkdir -p $MAKE_FILE_SYS_DIR 97 98 # Generated directories and files 99 mkdir -p $MAKE_FILE_SYS_DIR 100 gen_fs_tree "$MAKE_FILE_SYS_DIR" 1 101 102 # Make ISO9660 file system with different options. 103 # Mount the ISO9660 file system with different mount options. 104 105 tst_check_cmds mkisofs 106 107 for mkisofs_opt in \ 108 " " \ 109 "-J" \ 110 "-hfs -D" \ 111 " -R " \ 112 "-R -J" \ 113 "-f -l -D -J -L -R" \ 114 "-allow-lowercase -allow-multidot -iso-level 3 -f -l -D -J -L -R" 115 do 116 rm -f isofs.iso 117 mkisofs -o isofs.iso -quiet $mkisofs_opt $MAKE_FILE_SYS_DIR 2> /dev/null 118 if [ $? -eq 0 ]; then 119 tst_resm TPASS \ 120 "mkisofs -o isofs.iso -quiet $mkisofs_opt $MAKE_FILE_SYS_DIR" 121 else 122 tst_resm TFAIL \ 123 tst_resm TFAIL "mkisofs -o isofs.iso -quiet $mkisofs_opt $MAKE_FILE_SYS_DIR" 124 continue 125 fi 126 127 for mount_opt in \ 128 "loop" \ 129 "loop,norock" \ 130 "loop,nojoliet" \ 131 "loop,block=512,unhide" \ 132 "loop,block=1024,cruft" \ 133 "loop,block=2048,nocompress" \ 134 "loop,check=strict,map=off,gid=bin,uid=bin" \ 135 "loop,check=strict,map=acorn,gid=bin,uid=bin" \ 136 "loop,check=relaxed,map=normal" \ 137 "loop,block=512,unhide,session=2" 138 # "loop,sbsector=32" 139 do 140 mount -t iso9660 -o $mount_opt isofs.iso $MNT_POINT 141 if [ $? -ne 0 ]; then 142 tst_resm TFAIL \ 143 "mount -t iso9660 -o $mount_opt isofs.iso $MNT_POINT" 144 continue 145 fi 146 147 ls -lR $MNT_POINT > /dev/null 148 if [ $? -ne 0 ]; then 149 tst_resm TFAIL "ls -lR $MNT_POINT" 150 fi 151 152 umount $MNT_POINT 153 if [ $? -ne 0 ]; then 154 tst_brkm TFAIL "umount $MNT_POINT" 155 fi 156 157 tst_resm TPASS "mount/umount with \"$mount_opt\" options" 158 done 159 done 160 161 tst_exit 162