| #! /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 |