Files
apfstests/tests/generic/225
T
Darrick J. Wong 97dd2c3a6a generic/{094,225}: skip test when the xfs rt extent size is larger than 1 fsb
These two tests call various fallocate modes on a file and compare the
FIEMAP output to some golden output.  Unfortunately, the golden output
doesn't take into account the possibility that (on XFS) the files could be
created on a realtime volume with a large rt extent size set.

Under such a configuration, fpunch operations that are aligned to the fs
block size but not the rt extent size simply result in those blocks
being set to unwritten status.  Unfortunately, the test expects holes
and fails.  Therefore, detect the situation and skip the tests.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Eryu Guan <guaneryu@gmail.com>
2021-04-18 20:53:53 +08:00

68 lines
1.4 KiB
Bash
Executable File

#! /bin/bash
# SPDX-License-Identifier: GPL-2.0
# Copyright (c) 2009 Eric Sandeen. All Rights Reserved.
#
# FS QA Test No. 225
#
# Run the fiemap (file extent mapping) tester
#
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 /
rm -f $tmp.*
}
# get standard environment, filters and checks
. ./common/rc
. ./common/filter
# real QA test starts here
_supported_fs generic
_require_scratch
_require_odirect
_require_xfs_io_command "fiemap"
_scratch_mkfs > /dev/null 2>&1
_scratch_mount > /dev/null 2>&1
rm -f $seqres.full
fiemapfile=$SCRATCH_MNT/$seq.fiemap
fiemaplog=$SCRATCH_MNT/$seq.log
_require_test_program "fiemap-tester"
# FIEMAP test doesn't like finding unwritten blocks after it punches out
# a partial rt extent.
test "$FSTYP" = "xfs" && \
_require_file_block_size_equals_fs_block_size $fiemapfile
seed=`date +%s`
echo "using seed $seed" >> $fiemaplog
echo "fiemap run without preallocation, with sync"
$here/src/fiemap-tester -q -S -s $seed -p 0 -r 200 $fiemapfile 2>&1 | tee -a $fiemaplog
if [ $? -ne 0 ]; then
if grep -q "Operation not supported" $fiemaplog; then
_notrun "FIEMAP not supported by this filesystem type: $FSTYP"
fi
status=$?
exit
fi
echo "fiemap run without preallocation or sync"
$here/src/fiemap-tester -q -s $seed -p 0 -r 200 $fiemapfile 2>&1 | tee -a $fiemaplog
status=0
exit