| #! /bin/bash |
| # FS QA Test No. 032 |
| # |
| # cross check mkfs detection of foreign filesystems |
| # |
| #----------------------------------------------------------------------- |
| # 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=nathans@sgi.com |
| |
| seq=`basename $0` |
| echo "QA output created by $seq" |
| |
| here=`pwd` |
| tmp=/tmp/$$ |
| status=1 # failure is the default! |
| trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15 |
| rm -f $seq.full |
| |
| # get standard environment, filters and checks |
| . ./common.rc |
| . ./common.filter |
| |
| # real QA test starts here |
| _supported_fs xfs |
| _supported_os Linux |
| |
| _require_nobigloopfs |
| _require_scratch |
| |
| echo "Silence is golden." |
| for fs in `echo /sbin/mkfs.* | sed -e 's/.sbin.mkfs.//g'` |
| do |
| preop="" # for special input needs |
| preargs="" # for any special pre-device options |
| postargs="" # for any special post-device options |
| |
| # minix, msdos and vfat mkfs fails for large devices, restrict to 2000 blocks |
| [ $fs = minix ] && postargs=2000 |
| [ $fs = msdos ] && postargs=2000 |
| [ $fs = vfat ] && postargs=2000 |
| # these folks prompt before writing |
| [ $fs = jfs ] && preop="echo Y |" |
| [ $fs = gfs ] && preop="echo y |" && preargs="-p lock_nolock -j 1" |
| [ $fs = gfs2 ] && preop="echo y |" && preargs="-p lock_nolock -j 1" |
| [ $fs = reiserfs ] && preop="echo y |" && preargs="-f" |
| # cramfs mkfs requires a directory argument |
| [ $fs = cramfs ] && preargs=/proc/fs/xfs |
| [ $fs = ext2 ] && preargs="-F" |
| [ $fs = ext3 ] && preargs="-F" |
| [ $fs = ext4 ] && preargs="-F" |
| [ $fs = ext4dev ] && preargs="-F" |
| |
| # overwite the first few Kb - should blow away superblocks |
| src/devzero -n 20 $SCRATCH_DEV >/dev/null |
| |
| # create a filesystem of this type |
| echo "=== Creating $fs filesystem..." >>$seq.full |
| echo " ( $preop mkfs -t $fs $preargs $SCRATCH_DEV $postargs )" >>$seq.full |
| eval $preop mkfs -t $fs $preargs $SCRATCH_DEV $postargs >>$seq.full 2>&1 |
| |
| if [ $? -eq 0 ] ; then |
| # next, ensure we don't overwrite it |
| echo "=== Attempting XFS overwrite of $fs..." >>$seq.full |
| /sbin/mkfs.xfs $SCRATCH_DEV >>$seq.full 2>&1 |
| |
| [ $? -eq 0 ] && echo "Failed - overwrote fs type ${fs}!" |
| else |
| echo "mkfs of type ${fs} failed" >>$seq.full |
| fi |
| done |
| |
| # success, all done |
| status=0 |
| exit |