| #!/bin/sh |
| # |
| # 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. |
| # |
| # 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 (prakashn@us.ibm.com) |
| # and Michael Reed (mreed10@us.ibm.com) |
| # |
| # 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="" |
| |
| usage() |
| { |
| echo "USAGE: $0 <optional> -n -h" |
| exit |
| } |
| |
| cleanup() |
| { |
| if [ "$NO_CLEANUP" = "no" ]; then |
| tst_resm TINFO "Temporary directory $PWD was not removed" |
| else |
| tst_rmdir |
| fi |
| } |
| |
| max_depth=3 |
| max_dirs=4 |
| |
| gen_fs_tree() |
| { |
| local cur_path="$1" |
| local cur_depth="$2" |
| |
| if [ "$cur_depth" -gt "$max_depth" ]; then |
| return |
| fi |
| |
| for i in $(seq 1 $max_dirs); do |
| local new_path="$cur_path/subdir_$i" |
| |
| mkdir -p "$new_path" |
| |
| dd if=/dev/urandom of="$new_path/file" bs=1024 count=100 >/dev/null 2>&1 |
| |
| gen_fs_tree "$new_path" $((cur_depth + 1)) |
| done |
| } |
| |
| while getopts :hnd: arg; do |
| case $arg in |
| h) |
| echo "" |
| echo "n - The directories created will not be removed" |
| echo "h - Help options" |
| echo "" |
| usage |
| echo "" |
| ;; |
| n) |
| NO_CLEANUP="no" |
| ;; |
| esac |
| done |
| |
| tst_require_root |
| |
| tst_tmpdir |
| TST_CLEANUP=cleanup |
| |
| MNT_POINT="$PWD/mnt" |
| MAKE_FILE_SYS_DIR="$PWD/files" |
| |
| mkdir -p -m 777 $MNT_POINT |
| mkdir -p $MAKE_FILE_SYS_DIR |
| |
| # Generated directories and files |
| mkdir -p $MAKE_FILE_SYS_DIR |
| gen_fs_tree "$MAKE_FILE_SYS_DIR" 1 |
| |
| # Make ISO9660 file system with different options. |
| # Mount the ISO9660 file system with different mount options. |
| |
| tst_check_cmds mkisofs |
| |
| 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 \ |
| "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" |
| do |
| mount -t iso9660 -o $mount_opt isofs.iso $MNT_POINT |
| if [ $? -ne 0 ]; then |
| tst_resm TFAIL \ |
| "mount -t iso9660 -o $mount_opt isofs.iso $MNT_POINT" |
| continue |
| fi |
| |
| ls -lR $MNT_POINT > /dev/null |
| if [ $? -ne 0 ]; then |
| tst_resm TFAIL "ls -lR $MNT_POINT" |
| fi |
| |
| umount $MNT_POINT |
| if [ $? -ne 0 ]; then |
| tst_brkm TFAIL "umount $MNT_POINT" |
| fi |
| |
| tst_resm TPASS "mount/umount with \"$mount_opt\" options" |
| done |
| done |
| |
| tst_exit |