Files
apfstests/tests/generic/094
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

62 lines
1.3 KiB
Bash
Executable File

#! /bin/bash
# SPDX-License-Identifier: GPL-2.0
# Copyright (c) 2015 Facebook. All Rights Reserved.
#
# FS QA Test No. 094
#
# Run the fiemap (file extent mapping) tester with preallocation enabled
#
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"
_require_xfs_io_command "falloc"
_scratch_mkfs > /dev/null 2>&1
_scratch_mount > /dev/null 2>&1
rm -f $seqres.full
fiemapfile=$SCRATCH_MNT/$seq.fiemap
_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" >> $seqres.full
echo "fiemap run with sync"
$here/src/fiemap-tester -q -S -s $seed -r 200 $fiemapfile 2>&1 | \
tee -a $seqres.full
echo "fiemap run without sync"
$here/src/fiemap-tester -q -s $seed -r 200 $fiemapfile 2>&1 | \
tee -a $seqres.full
status=0
exit