blob: e6a3b09e7b489524f120b598a69d56e8fc702d68 [file] [log] [blame]
#!/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.
#
# 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
#
# FILE : isofs.sh
# USAGE : isofs.sh <optional> -n (no clean up)
#
# 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.
#
# REQUIREMENTS:
#
# HISTORY :
# 06/27/2003 Prakash Narayana (prakashn@us.ibm.com)
# 07/28/2005 Michael Reed (mreed10@us.ibm.com)
# - 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
#
# 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
}
#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
##############################################################
#
# 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
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.
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
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
rm -rf isofs.iso $MNT_POINT
echo "FAILED: mkisofs -o isofs.iso $mkisofs_opt $MAKE_FILE_SYS_DIR failed"
exit 1
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
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
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
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