blob: ce55200f7bc34c8d995b505dd956eecf424cc925 [file] [log] [blame]
#! /bin/bash
# SPDX-License-Identifier: GPL-2.0
# Copyright (c) 2000-2002 Silicon Graphics, Inc. All Rights Reserved.
#
# FS QA Test No. 740
#
# cross check mkfs detection of foreign filesystems
#
. ./common/preamble
_begin_fstest mkfs auto quick
# Import common functions.
. ./common/filter
# a bunch of file systems don't support foreign fs detection
# ext* do support it, but disable the feature when called non-interactively
_exclude_fs ext2
_exclude_fs ext3
_exclude_fs ext4
_exclude_fs jfs
_exclude_fs ocfs2
_exclude_fs udf
_require_scratch_nocheck
_require_no_large_scratch_dev
_require_block_device "${SCRATCH_DEV}"
# not all the FS support zoned block device
_require_non_zoned_device "${SCRATCH_DEV}"
echo "Silence is golden."
for fs in `echo ${MKFS_PROG}.* | sed -e "s:${MKFS_PROG}.::g"`
do
preop="" # for special input needs (usually a prompt)
preargs="" # for any special pre-device options
postargs="" # for any special post-device options
case "$fs" in
ext2|ext3|ext4)
preargs="-F"
;;
cramfs)
# cramfs mkfs requires a directory argument
preargs=/proc/fs
;;
gfs|gfs2)
preop="echo y |"
preargs="-p lock_nolock -j 1"
;;
jffs2)
# mkfs.jffs2 doesn't work like a normal mkfs and just fails
continue;
;;
jfs)
preop="echo Y |"
;;
minix|msdos|vfat)
# minix, msdos and vfat mkfs fails for large devices,
# restrict to 2000 blocks
postargs=2000
;;
ntfs)
# "quick" format that doesn't zero the entire device
postargs="--quick"
;;
reiser4)
preop="echo y |"
preargs="-f"
;;
*)
;;
esac
# overwite the first few Kb - should blow away superblocks
$here/src/devzero -n 20 $SCRATCH_DEV >/dev/null
# create a filesystem of this type
echo "=== Creating $fs filesystem..." >>$seqres.full
echo " ( $preop mkfs -t $fs $preargs $SCRATCH_DEV $postargs )" >>$seqres.full
eval $preop mkfs -t $fs $preargs $SCRATCH_DEV $postargs >>$seqres.full 2>&1
if [ $? -eq 0 ] ; then
# next, ensure we don't overwrite it
echo "=== Attempting $FSTYP overwrite of $fs..." >>$seqres.full
${MKFS_PROG} -t $FSTYP $SCRATCH_DEV >>$seqres.full 2>&1
[ $? -eq 0 ] && echo "Failed - overwrote fs type ${fs}!"
else
echo "mkfs of type ${fs} failed" >>$seqres.full
fi
done
# success, all done
status=0
exit