| #! /bin/bash |
| # FS QA Test No. 049 |
| # |
| # XFS on loop test |
| # |
| #----------------------------------------------------------------------- |
| # Copyright (c) 2000-2002 Silicon Graphics, Inc. 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. |
| # |
| # This program is distributed in the hope that it would 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 the Free Software Foundation, |
| # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA |
| # |
| #----------------------------------------------------------------------- |
| # |
| # creator |
| owner=dxm@sgi.com |
| |
| seq=`basename $0` |
| echo "QA output created by $seq" |
| |
| _cleanup() |
| { |
| cd / |
| umount $SCRATCH_MNT/test2 > /dev/null 2>&1 |
| umount $SCRATCH_MNT/test > /dev/null 2>&1 |
| rm -f $tmp.* |
| |
| if [ -w $seq.full ] |
| then |
| echo "--- mounts at end (after cleanup)" >> $seq.full |
| mount >> $seq.full |
| fi |
| } |
| |
| here=`pwd` |
| tmp=/tmp/$$ |
| status=1 # failure is the default! |
| trap "_cleanup ; exit \$status" 0 1 2 3 15 |
| |
| # get standard environment, filters and checks |
| . ./common.rc |
| . ./common.filter |
| |
| # real QA test starts here |
| _supported_fs xfs |
| _supported_os Linux |
| |
| _log() |
| { |
| echo "--- $*" |
| echo "--- $*" >> $seq.full |
| } |
| |
| _require_nobigloopfs |
| _require_nonexternal |
| _require_scratch |
| _require_loop |
| _require_ext2 |
| |
| rm -f $seq.full |
| |
| echo "(dev=$SCRATCH_DEV, mount=$SCRATCH_MNT)" >> $seq.full |
| echo "" >> $seq.full |
| |
| echo "--- mounts" >> $seq.full |
| mount >> $seq.full |
| |
| _log "Create ext2 fs on scratch" |
| mkfs -t ext2 -F $SCRATCH_DEV >> $seq.full 2>&1 \ |
| || _fail "!!! failed to mkfs ext2" |
| |
| _log "Mount ext2 fs on scratch" |
| mount -t ext2 $SCRATCH_DEV $SCRATCH_MNT >> $seq.full 2>&1 \ |
| || _fail "!!! failed to mount" |
| |
| _log "Create xfs fs in file on scratch" |
| /sbin/mkfs.xfs -f -dfile,name=$SCRATCH_MNT/test.xfs,size=40m \ |
| >> $seq.full 2>&1 \ |
| || _fail "!!! failed to mkfs xfs" |
| |
| _log "Make mount points" |
| mkdir $SCRATCH_MNT/test $SCRATCH_MNT/test2 >> $seq.full 2>&1 \ |
| || _fail "!!! failed to make mount points" |
| |
| _log "Mount xfs via loop" |
| mount -t xfs -o loop $SCRATCH_MNT/test.xfs $SCRATCH_MNT/test >> $seq.full 2>&1 \ |
| || _fail "!!! failed to loop mount xfs" |
| |
| _log "stress" |
| $FSSTRESS_PROG -d $SCRATCH_MNT/test -n 1000 $FSSTRESS_AVOID >> $seq.full 2>&1 \ |
| || _fail "!!! stress failed" |
| |
| _log "clean" |
| rm -rf $SCRATCH_MNT/test/* >> $seq.full 2>&1 \ |
| || _fail "!!! clean failed" |
| |
| _log "create file for ext2 fs" |
| dd if=/dev/zero of=$SCRATCH_MNT/test/test.ext2 bs=1024 count=10240 >> $seq.full 2>&1 \ |
| || _fail "!!! create file failed" |
| |
| _log "Create ext2 fs in file on looped xfs" |
| echo y | mkfs -t ext2 $SCRATCH_MNT/test/test.ext2 >> $seq.full 2>&1 \ |
| || _fail "!!! failed to mkfs ext2 on xfs" |
| |
| _log "Mount ext2 on xfs via loop" |
| mount -t ext2 -o loop $SCRATCH_MNT/test/test.ext2 $SCRATCH_MNT/test2 >> $seq.full 2>&1 \ |
| || _fail "!!! failed to loop mount xfs" |
| |
| _log "stress ext2 on xfs via loop" |
| $FSSTRESS_PROG -d $SCRATCH_MNT/test2 -n 1000 $FSSTRESS_AVOID >> $seq.full 2>&1 \ |
| || _fail "!!! stress ext2 failed" |
| |
| _log "clean" |
| rm -rf $SCRATCH_MNT/test/* >> $seq.full 2>&1 \ |
| || _fail "!!! clean failed" |
| |
| _log "umount ext2 on xfs" |
| umount $SCRATCH_MNT/test2 >> $seq.full 2>&1 \ |
| || _fail "!!! umount ext2 failed" |
| |
| _log "umount xfs" |
| umount $SCRATCH_MNT/test >> $seq.full 2>&1 \ |
| || _fail "!!! umount xfs failed" |
| |
| echo "--- mounts at end (before cleanup)" >> $seq.full |
| mount >> $seq.full |
| |
| rm -f $seq.full |
| # success, all done |
| status=0 |
| exit |