mirror of
https://github.com/linux-apfs/apfstests.git
synced 2026-05-01 15:01:44 -07:00
7e98d41a6e
Refactor every test in the entire test suite to use the new boilerplate functions. This also migrates all the test group information into the test files. This patch has been autogenerated via the command: ./tools/convert-group btrfs ceph cifs ext4 f2fs generic nfs ocfs2 overlay perf shared udf xfs Signed-off-by: Darrick J. Wong <djwong@kernel.org> Reviewed-by: Allison Henderson <allison.henderson@oracle.com> Reviewed-by: Eric Biggers <ebiggers@google.com> Signed-off-by: Eryu Guan <guaneryu@gmail.com>
325 lines
10 KiB
Bash
Executable File
325 lines
10 KiB
Bash
Executable File
#! /bin/bash
|
|
# SPDX-License-Identifier: GPL-2.0
|
|
# Copyright (c) 2016 Red Hat, Inc. All Rights Reserved.
|
|
#
|
|
# FS QA Test No. xfs/191
|
|
#
|
|
# mkfs.xfs input validation test. Designed to break mkfs.xfs if it doesn't
|
|
# filter garbage input or invalid option combinations correctly.
|
|
#
|
|
. ./common/preamble
|
|
_begin_fstest auto quick mkfs realtime
|
|
|
|
# Override the default cleanup function.
|
|
_cleanup()
|
|
{
|
|
cd /
|
|
rm -f $tmp.*
|
|
[ -n "$loopdev" ] && _destroy_loop_device $loopdev
|
|
}
|
|
|
|
# Import common functions.
|
|
. ./common/filter
|
|
|
|
# real QA test starts here
|
|
|
|
# Modify as appropriate.
|
|
_supported_fs xfs
|
|
_require_test
|
|
_require_loop
|
|
_require_xfs_mkfs_validation
|
|
|
|
echo silence is golden
|
|
|
|
# clear out any options to mkfs first. We want to test realtime and external log
|
|
# devices if we can, but we also want to control them ourselves.
|
|
logdev=$SCRATCH_LOGDEV
|
|
rtdev=$SCRATCH_RTDEV
|
|
|
|
MKFS_OPTIONS=
|
|
SCRATCH_LOGDEV=
|
|
SCRATCH_RTDEV=
|
|
|
|
# limit the image size of the filesystem being created to something small
|
|
fssize=$((4 * 1024 * 1024 * 1024))
|
|
logsize=$((4 * 1024 * 1024 * 100))
|
|
fsimg=$TEST_DIR/$seq.img
|
|
|
|
#create a loop device to test
|
|
loopimg=$TEST_DIR/$seq.loopimg
|
|
$XFS_IO_PROG -f -c "truncate $fssize" $loopimg
|
|
loopdev=$(_create_loop_device $loopimg)
|
|
SCRATCH_DEV=$loopdev
|
|
|
|
do_mkfs_pass()
|
|
{
|
|
echo >> $seqres.full
|
|
echo "pass expected $*" >> $seqres.full
|
|
$MKFS_XFS_PROG -f -N $* >> $seqres.full 2>&1
|
|
[ $? -ne 0 ] && echo "fail $*"
|
|
}
|
|
|
|
do_mkfs_fail()
|
|
{
|
|
echo >> $seqres.full
|
|
echo "fail expected $*" >> $seqres.full
|
|
$MKFS_XFS_PROG -f -N $* >> $seqres.full 2>&1
|
|
[ $? -eq 0 ] && echo "pass $*"
|
|
}
|
|
|
|
reset_fsimg()
|
|
{
|
|
rm -f $fsimg
|
|
$XFS_IO_PROG -f -c "truncate $fssize" $fsimg
|
|
}
|
|
|
|
reset_fsimg
|
|
|
|
do_mkfs_pass $SCRATCH_DEV
|
|
|
|
# basic "should fail" options
|
|
|
|
# specifying sector sizes in sectors or blocks or garbage
|
|
do_mkfs_fail -s size=2s $SCRATCH_DEV
|
|
do_mkfs_fail -d sectsize=2s $SCRATCH_DEV
|
|
do_mkfs_fail -l sectsize=2s $SCRATCH_DEV
|
|
do_mkfs_fail -s size=2b $SCRATCH_DEV
|
|
do_mkfs_fail -d sectsize=2b $SCRATCH_DEV
|
|
do_mkfs_fail -l sectsize=2b $SCRATCH_DEV
|
|
|
|
do_mkfs_fail -s size=grot $SCRATCH_DEV
|
|
do_mkfs_fail -s size=2yerk $SCRATCH_DEV
|
|
do_mkfs_fail -d sectsize=blah $SCRATCH_DEV
|
|
do_mkfs_fail -d sectsize=2foo $SCRATCH_DEV
|
|
do_mkfs_fail -l sectsize=nggh $SCRATCH_DEV
|
|
do_mkfs_fail -l sectsize=2nggh $SCRATCH_DEV
|
|
|
|
# conflicting sector/block sizes
|
|
do_mkfs_fail -s size=512 -d sectsize=1024 $SCRATCH_DEV
|
|
do_mkfs_fail -s size=512 -l sectsize=1024 $SCRATCH_DEV
|
|
do_mkfs_fail -d sectsize=2048 -l sectsize=1024 $SCRATCH_DEV
|
|
|
|
do_mkfs_fail -b size=512 -s size=1024 $SCRATCH_DEV
|
|
do_mkfs_fail -b size=512 -d sectsize=1024 $SCRATCH_DEV
|
|
do_mkfs_fail -b size=512 -l sectsize=1024 $SCRATCH_DEV
|
|
|
|
# specifying block sizes in sectors without specifying sector size
|
|
# or in blocks or garbage
|
|
do_mkfs_fail -b size=2s $SCRATCH_DEV
|
|
do_mkfs_fail -b size=2b $SCRATCH_DEV
|
|
do_mkfs_fail -b size=nfi $SCRATCH_DEV
|
|
do_mkfs_fail -b size=4096nfi $SCRATCH_DEV
|
|
do_mkfs_fail -n size=nfi $SCRATCH_DEV
|
|
do_mkfs_fail -n size=4096nfi $SCRATCH_DEV
|
|
|
|
do_mkfs_pass -n size=2b $SCRATCH_DEV
|
|
do_mkfs_pass -n size=2b $SCRATCH_DEV
|
|
|
|
# bad label length
|
|
do_mkfs_fail -L thisiswaytoolong $SCRATCH_DEV
|
|
|
|
# basic "should pass" data section tests
|
|
do_mkfs_pass $SCRATCH_DEV
|
|
do_mkfs_pass -d name=$SCRATCH_DEV
|
|
do_mkfs_pass -d size=$fssize $SCRATCH_DEV
|
|
do_mkfs_pass -d agcount=32 $SCRATCH_DEV
|
|
do_mkfs_pass -d agsize=32m $SCRATCH_DEV
|
|
do_mkfs_pass -d agsize=32M $SCRATCH_DEV
|
|
do_mkfs_pass -d agsize=1g $SCRATCH_DEV
|
|
do_mkfs_pass -d agsize=$((32 * 1024 * 1024)) $SCRATCH_DEV
|
|
do_mkfs_pass -b size=4096 -d agsize=8192b $SCRATCH_DEV
|
|
do_mkfs_pass -d agsize=8192b $SCRATCH_DEV
|
|
do_mkfs_pass -d agsize=65536s $SCRATCH_DEV
|
|
do_mkfs_pass -d sectsize=512,agsize=65536s $SCRATCH_DEV
|
|
do_mkfs_pass -s size=512 -d agsize=65536s $SCRATCH_DEV
|
|
do_mkfs_pass -d noalign $SCRATCH_DEV
|
|
do_mkfs_pass -d sunit=0,swidth=0 $SCRATCH_DEV
|
|
do_mkfs_pass -d sunit=8,swidth=8 $SCRATCH_DEV
|
|
do_mkfs_pass -d sunit=8,swidth=64 $SCRATCH_DEV
|
|
do_mkfs_pass -d su=0,sw=0 $SCRATCH_DEV
|
|
do_mkfs_pass -d su=0,sw=64 $SCRATCH_DEV
|
|
do_mkfs_pass -d su=4096,sw=1 $SCRATCH_DEV
|
|
do_mkfs_pass -d su=4096s,sw=64 $SCRATCH_DEV
|
|
do_mkfs_pass -d su=4096b,sw=64 $SCRATCH_DEV
|
|
do_mkfs_pass -d su=4k,sw=1 $SCRATCH_DEV
|
|
do_mkfs_pass -d su=4K,sw=8 $SCRATCH_DEV
|
|
do_mkfs_pass -b size=4096 -d su=1b,sw=8 $SCRATCH_DEV
|
|
do_mkfs_pass -d sectsize=512,su=8s,sw=8 $SCRATCH_DEV
|
|
do_mkfs_pass -s size=512 -d su=8s,sw=8 $SCRATCH_DEV
|
|
|
|
# invalid data section tests
|
|
do_mkfs_fail -d size=${fssize}b $SCRATCH_DEV
|
|
do_mkfs_fail -d size=${fssize}s $SCRATCH_DEV
|
|
do_mkfs_fail -d size=${fssize}yerk $SCRATCH_DEV
|
|
do_mkfs_fail -d agsize=32Mbsdfsdo $SCRATCH_DEV
|
|
do_mkfs_fail -d agsize=1GB $SCRATCH_DEV
|
|
do_mkfs_fail -d agcount=1k $SCRATCH_DEV
|
|
do_mkfs_fail -d agcount=6b $SCRATCH_DEV
|
|
do_mkfs_fail -d agcount=32,agsize=32m $SCRATCH_DEV
|
|
do_mkfs_fail -d sunit=0,swidth=64 $SCRATCH_DEV
|
|
do_mkfs_fail -d sunit=64,swidth=0 $SCRATCH_DEV
|
|
do_mkfs_fail -d sunit=64,swidth=64,noalign $SCRATCH_DEV
|
|
do_mkfs_fail -d sunit=64k,swidth=64 $SCRATCH_DEV
|
|
do_mkfs_fail -d sunit=64,swidth=64m $SCRATCH_DEV
|
|
do_mkfs_fail -d su=4096,sw=0 $SCRATCH_DEV
|
|
do_mkfs_fail -d su=4097,sw=1 $SCRATCH_DEV
|
|
do_mkfs_fail -d su=4096,sw=64,noalign $SCRATCH_DEV
|
|
do_mkfs_fail -d su=4096,sw=64s $SCRATCH_DEV
|
|
do_mkfs_fail -d su=4096garabge,sw=64 $SCRATCH_DEV
|
|
do_mkfs_fail -d su=4096,sw=64,sunit=64,swidth=64 $SCRATCH_DEV
|
|
do_mkfs_fail -d sectsize=10,agsize=65536s $SCRATCH_DEV
|
|
do_mkfs_fail -d sectsize=512s,agsize=65536s $SCRATCH_DEV
|
|
|
|
reset_fsimg
|
|
|
|
# file section, should pass
|
|
do_mkfs_pass $fsimg
|
|
do_mkfs_pass -d file=0 $SCRATCH_DEV
|
|
do_mkfs_pass -d size=$fssize,file=1,name=$fsimg
|
|
do_mkfs_pass -d size=$fssize,file $fsimg
|
|
do_mkfs_pass -d size=$fssize $fsimg
|
|
do_mkfs_pass -d size=$fssize,name=$fsimg
|
|
do_mkfs_pass -d size=$((fssize/2)) $fsimg
|
|
# again this one, to check that we didn't truncated the file
|
|
do_mkfs_pass -d size=$fssize $fsimg
|
|
rm -f $fsimg
|
|
do_mkfs_pass -d file,size=$fssize $fsimg
|
|
|
|
reset_fsimg
|
|
|
|
# file section, should fail
|
|
do_mkfs_fail -d file=1 $SCRATCH_DEV
|
|
do_mkfs_fail -d file $fsimg # no size given
|
|
rm -f $fsimg
|
|
do_mkfs_fail $fsimg
|
|
do_mkfs_fail -d size=$fssize $fsimg
|
|
|
|
reset_fsimg
|
|
|
|
# log section, should pass
|
|
do_mkfs_pass -l size=$logsize -d size=$fssize $SCRATCH_DEV
|
|
do_mkfs_pass -l agnum=2 $SCRATCH_DEV
|
|
do_mkfs_pass -l size=4096b $SCRATCH_DEV
|
|
do_mkfs_pass -l sectsize=512 $SCRATCH_DEV
|
|
do_mkfs_pass -l sunit=64 $SCRATCH_DEV
|
|
do_mkfs_pass -l sunit=64 -d sunit=8,swidth=8 $SCRATCH_DEV
|
|
do_mkfs_pass -l sunit=8 $SCRATCH_DEV
|
|
do_mkfs_pass -l su=$((4096*10)) $SCRATCH_DEV
|
|
do_mkfs_pass -l su=10b $SCRATCH_DEV
|
|
do_mkfs_pass -b size=4096 -l su=10b $SCRATCH_DEV
|
|
do_mkfs_pass -l sectsize=512,su=$((4096*10)) $SCRATCH_DEV
|
|
do_mkfs_pass -l internal $SCRATCH_DEV
|
|
$XFS_IO_PROG -f -c "truncate $logsize" $fsimg
|
|
do_mkfs_pass -l logdev=$fsimg $SCRATCH_DEV
|
|
do_mkfs_pass -l name=$fsimg $SCRATCH_DEV
|
|
do_mkfs_pass -l lazy-count=0 -m crc=0 $SCRATCH_DEV
|
|
do_mkfs_pass -l lazy-count=1 -m crc=0 $SCRATCH_DEV
|
|
do_mkfs_pass -l version=1 -m crc=0 $SCRATCH_DEV
|
|
do_mkfs_pass -l version=2 -m crc=0 $SCRATCH_DEV
|
|
do_mkfs_pass -l version=2 $SCRATCH_DEV
|
|
|
|
# log section, should fail
|
|
do_mkfs_fail -l size=${fssize}b $SCRATCH_DEV
|
|
do_mkfs_fail -l size=${fssize}s $SCRATCH_DEV
|
|
do_mkfs_fail -l size=${fssize}yerk $SCRATCH_DEV
|
|
do_mkfs_fail -l agnum=1k $SCRATCH_DEV
|
|
do_mkfs_fail -l agnum=6b $SCRATCH_DEV
|
|
do_mkfs_fail -l agnum=32 $SCRATCH_DEV
|
|
do_mkfs_fail -l sunit=0 $SCRATCH_DEV
|
|
do_mkfs_fail -l sunit=63 $SCRATCH_DEV
|
|
do_mkfs_fail -l su=1 $SCRATCH_DEV
|
|
do_mkfs_fail -l su=10s $SCRATCH_DEV
|
|
do_mkfs_fail -l su=$((4096*10+1)) $SCRATCH_DEV
|
|
do_mkfs_fail -l sectsize=10,agsize=65536s $SCRATCH_DEV
|
|
do_mkfs_fail -l sectsize=512s,agsize=65536s $SCRATCH_DEV
|
|
do_mkfs_fail -l internal=0 $SCRATCH_DEV
|
|
reset_fsimg
|
|
do_mkfs_fail -l internal=1,logdev=$fsimg $SCRATCH_DEV
|
|
do_mkfs_fail -l lazy-count=1garbage $SCRATCH_DEV
|
|
do_mkfs_fail -l lazy-count=2 $SCRATCH_DEV
|
|
do_mkfs_fail -l lazy-count=0 -m crc=1 $SCRATCH_DEV
|
|
do_mkfs_fail -l version=1 -m crc=1 $SCRATCH_DEV
|
|
do_mkfs_fail -l version=0 $SCRATCH_DEV
|
|
|
|
# naming section, should pass
|
|
do_mkfs_pass -n size=65536 $SCRATCH_DEV
|
|
do_mkfs_pass -n version=2 $SCRATCH_DEV
|
|
do_mkfs_pass -n version=ci $SCRATCH_DEV
|
|
do_mkfs_pass -n ftype=0 -m crc=0 $SCRATCH_DEV
|
|
do_mkfs_pass -n ftype=1 $SCRATCH_DEV
|
|
|
|
# naming section, should fail
|
|
do_mkfs_fail -n version=1 $SCRATCH_DEV
|
|
do_mkfs_fail -n version=cid $SCRATCH_DEV
|
|
do_mkfs_fail -n ftype=4 $SCRATCH_DEV
|
|
do_mkfs_fail -n ftype=0 $SCRATCH_DEV
|
|
do_mkfs_fail -n log=15 $SCRATCH_DE
|
|
|
|
reset_fsimg
|
|
|
|
# metadata section, should pass
|
|
do_mkfs_pass -m crc=1,finobt=1 $SCRATCH_DEV
|
|
do_mkfs_pass -m crc=1,finobt=0 $SCRATCH_DEV
|
|
do_mkfs_pass -m crc=0,finobt=0 $SCRATCH_DEV
|
|
do_mkfs_pass -m crc=1 -n ftype=1 $SCRATCH_DEV
|
|
do_mkfs_pass -m crc=0 -n ftype=1 $SCRATCH_DEV
|
|
do_mkfs_pass -m crc=0 -n ftype=0 $SCRATCH_DEV
|
|
|
|
# metadata section, should fail
|
|
do_mkfs_fail -m crc=0,finobt=1 $SCRATCH_DEV
|
|
do_mkfs_fail -m crc=1 -n ftype=0 $SCRATCH_DEV
|
|
|
|
# realtime section, results depend on reflink
|
|
_scratch_mkfs_xfs_supported -m reflink=0 >/dev/null 2>&1
|
|
if [ $? -eq 0 ]; then
|
|
do_mkfs_pass -m reflink=0 -r rtdev=$fsimg $SCRATCH_DEV
|
|
do_mkfs_pass -m reflink=0 -r size=65536,rtdev=$fsimg $SCRATCH_DEV
|
|
do_mkfs_fail -m reflink=1 -r rtdev=$fsimg $SCRATCH_DEV
|
|
do_mkfs_fail -m reflink=1 -r size=65536,rtdev=$fsimg $SCRATCH_DEV
|
|
else
|
|
do_mkfs_pass -r rtdev=$fsimg $SCRATCH_DEV
|
|
do_mkfs_pass -r size=65536,rtdev=$fsimg $SCRATCH_DEV
|
|
fi
|
|
|
|
# realtime section, should pass
|
|
do_mkfs_pass -r extsize=4k $SCRATCH_DEV
|
|
do_mkfs_pass -r extsize=1G $SCRATCH_DEV
|
|
do_mkfs_pass -r noalign $SCRATCH_DEV
|
|
|
|
# realtime section, should fail
|
|
do_mkfs_fail -r rtdev=$SCRATCH_DEV
|
|
do_mkfs_fail -r extsize=256 $SCRATCH_DEV
|
|
do_mkfs_fail -r extsize=2G $SCRATCH_DEV
|
|
do_mkfs_fail -r size=65536 $SCRATCH_DEV
|
|
|
|
# inode section, should pass
|
|
do_mkfs_pass -i size=256 -m crc=0 $SCRATCH_DEV
|
|
do_mkfs_pass -i size=512 $SCRATCH_DEV
|
|
do_mkfs_pass -i size=2048 $SCRATCH_DEV
|
|
do_mkfs_pass -i perblock=2 $SCRATCH_DEV
|
|
do_mkfs_pass -i maxpct=10 $SCRATCH_DEV
|
|
do_mkfs_pass -i maxpct=100 $SCRATCH_DEV
|
|
do_mkfs_pass -i maxpct=0 $SCRATCH_DEV
|
|
do_mkfs_pass -i align=0 -m crc=0 $SCRATCH_DEV
|
|
do_mkfs_pass -i align=1 -m crc=1 $SCRATCH_DEV
|
|
do_mkfs_pass -i attr=1 -m crc=0 $SCRATCH_DEV
|
|
do_mkfs_pass -i attr=2 $SCRATCH_DEV
|
|
do_mkfs_pass -i projid32bit $SCRATCH_DEV
|
|
do_mkfs_pass -i sparse=0 $SCRATCH_DEV
|
|
do_mkfs_pass -i sparse -m crc $SCRATCH_DEV
|
|
|
|
# inode section, should fail
|
|
do_mkfs_fail -i size=256 -m crc $SCRATCH_DEV
|
|
do_mkfs_fail -i size=128 $SCRATCH_DEV
|
|
do_mkfs_fail -i size=513 $SCRATCH_DEV
|
|
do_mkfs_fail -i size=4096 $SCRATCH_DEV
|
|
do_mkfs_fail -i maxpct=110 $SCRATCH_DEV
|
|
do_mkfs_fail -i align=2 $SCRATCH_DEV
|
|
do_mkfs_fail -i sparse -m crc=0 $SCRATCH_DEV
|
|
do_mkfs_fail -i align=0 -m crc=1 $SCRATCH_DEV
|
|
do_mkfs_fail -i attr=1 -m crc=1 $SCRATCH_DEV
|
|
do_mkfs_fail -i log=10 $SCRATCH_DEV
|
|
|
|
status=0
|
|
exit
|