Files
apfstests/tests/generic/569
T
Eric Sandeen 4f9638d1c0 fstests: test for fallocate capability in more tests
These 3 tests explicitly call xfs_io's fallocate command, test whether
it works before running the test.

Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Zorro Lang <zlang@redhat.com>
Signed-off-by: Eryu Guan <guaneryu@gmail.com>
2020-04-20 00:42:11 +08:00

72 lines
1.6 KiB
Bash
Executable File

#! /bin/bash
# SPDX-License-Identifier: GPL-2.0-or-newer
# Copyright (c) 2019, Oracle and/or its affiliates. All Rights Reserved.
#
# FS QA Test No. 569
#
# Check that we can't modify a file that's an active swap file.
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 /
swapoff $testfile
rm -rf $tmp.* $testfile
}
# get standard environment, filters and checks
. ./common/rc
. ./common/filter
# real QA test starts here
_supported_os Linux
_supported_fs generic
_require_xfs_io_command "falloc"
_require_test_program swapon
_require_scratch_swapfile
rm -f $seqres.full
_scratch_mkfs > $seqres.full 2>&1
_scratch_mount >> $seqres.full 2>&1
testfile=$SCRATCH_MNT/$seq.swap
_format_swapfile $testfile 20m
# Can you modify the swapfile via previously open file descriptors?
for verb in 1 2 3 4; do
echo "verb $verb"
"$here/src/swapon" -v $verb $testfile
swapoff $testfile
done
# Now try writing with a new file descriptor.
swapon $testfile 2>&1 | _filter_scratch
# Can we write to it?
$XFS_IO_PROG -c 'pwrite -S 0x59 64k 64k' $testfile 2>&1 | _filter_xfs_io_error
$XFS_IO_PROG -d -c 'pwrite -S 0x60 64k 64k' $testfile 2>&1 | _filter_xfs_io_error
$XFS_IO_PROG -c 'mmap -rw 64k 64k' -c 'mwrite -S 0x61 64k 64k' $testfile
# Can we change the file size?
$XFS_IO_PROG -c 'truncate 18m' $testfile
# Can you fallocate the file?
$XFS_IO_PROG -c 'falloc 0 32m' $testfile
# We test that you can't reflink, dedupe, or copy_file_range into a swapfile
# in other tests.
# success, all done
status=0
exit