mirror of
https://github.com/linux-apfs/apfstests.git
synced 2026-05-01 15:01:44 -07:00
97dd2c3a6a
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>
68 lines
1.4 KiB
Bash
Executable File
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
|