mirror of
https://github.com/linux-apfs/apfstests.git
synced 2026-05-01 15:01:44 -07:00
8c4d2b38fc
A large number of xfs-specific tests rely on specific behaviors of the data device allocator, such as fragmenting free space, carefully curated inode and free space counts, or features like filestreams that only exist on the data device. These tests fail horribly if the test runner specified rtinherit=1 on the mkfs command line, so skip them all. Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com> Reviewed-by: Zorro Lang <zlang@redhat.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Eryu Guan <guaneryu@gmail.com>
82 lines
1.6 KiB
Bash
Executable File
82 lines
1.6 KiB
Bash
Executable File
#! /bin/bash
|
|
# SPDX-License-Identifier: GPL-2.0
|
|
# Copyright (c) 2016, Oracle and/or its affiliates. All Rights Reserved.
|
|
#
|
|
# FS QA Test No. 318
|
|
#
|
|
# Simulate free extent errors with a file write and a file remove.
|
|
#
|
|
seq=`basename $0`
|
|
seqres=$RESULT_DIR/$seq
|
|
echo "QA output created by $seq"
|
|
|
|
here=`pwd`
|
|
tmp=/tmp/$$
|
|
status=1 # failure is the default!
|
|
trap "_cleanup; exit \$status" 0 1 2 3 15
|
|
|
|
_cleanup()
|
|
{
|
|
cd /
|
|
_scratch_unmount > /dev/null 2>&1
|
|
rm -rf $tmp.*
|
|
}
|
|
|
|
# get standard environment, filters and checks
|
|
. ./common/rc
|
|
. ./common/filter
|
|
. ./common/inject
|
|
|
|
# real QA test starts here
|
|
_supported_os Linux
|
|
_supported_fs xfs
|
|
_require_scratch
|
|
_require_error_injection
|
|
_require_xfs_io_error_injection "rmap_finish_one"
|
|
_require_no_rtinherit
|
|
|
|
rm -f $seqres.full
|
|
|
|
blksz=65536
|
|
blks=64
|
|
sz=$((blksz * blks))
|
|
echo "Format filesystem"
|
|
_scratch_mkfs >/dev/null 2>&1
|
|
_scratch_mount >> $seqres.full
|
|
|
|
echo "Create files"
|
|
touch $SCRATCH_MNT/file1
|
|
|
|
echo "Write files"
|
|
$XFS_IO_PROG -c "pwrite -S 0x67 0 $sz" $SCRATCH_MNT/file1 >> $seqres.full
|
|
sync
|
|
|
|
echo "Check files"
|
|
md5sum $SCRATCH_MNT/file1 2>&1 | _filter_scratch
|
|
|
|
echo "Inject error"
|
|
_scratch_inject_error "free_extent"
|
|
|
|
echo "Remove files"
|
|
rm -rf $SCRATCH_MNT/file1
|
|
sync
|
|
$XFS_IO_PROG -x -c 'freeze' -c 'thaw' $SCRATCH_MNT >> $seqres.full 2>&1
|
|
|
|
echo "FS should be shut down, touch will fail"
|
|
touch $SCRATCH_MNT/badfs 2>&1 | _filter_scratch
|
|
|
|
echo "Remount to replay log"
|
|
_scratch_inject_logprint >> $seqres.full
|
|
|
|
echo "Check files"
|
|
md5sum $SCRATCH_MNT/file1 2>&1 | _filter_scratch
|
|
|
|
echo "FS should be online, touch should succeed"
|
|
touch $SCRATCH_MNT/goodfs
|
|
|
|
echo "Done"
|
|
|
|
# success, all done
|
|
status=0
|
|
exit
|