2 # SPDX-License-Identifier: GPL-2.0
3 # Copyright (C) 2017 SUSE Linux Products GmbH. All Rights Reserved.
5 # FS QA Test No. generic/439
7 # Test that if we punch a hole in a file, with either a range that goes beyond
8 # the file's size or covers a file range that is already a hole, and that if
9 # after we do some buffered write operations that cover different parts of the
10 # hole, no warnings are emmitted in syslog/dmesg and the file's content is
11 # correct after remounting the filesystem.
14 seqres=$RESULT_DIR/$seq
15 echo "QA output created by $seq"
18 status=1 # failure is the default!
19 trap "_cleanup; exit \$status" 0 1 2 3 15
27 # get standard environment, filters and checks
31 # real QA test starts here
35 _require_xfs_io_command "fpunch"
39 _scratch_mkfs >>$seqres.full 2>&1
42 $XFS_IO_PROG -f -c "pwrite -S 0xaa 0 100K" $SCRATCH_MNT/f | _filter_xfs_io
43 $XFS_IO_PROG -c "fpunch 60K 90K" $SCRATCH_MNT/f
44 $XFS_IO_PROG -c "pwrite -S 0xbb -b 100K 50K 100K" $SCRATCH_MNT/f | _filter_xfs_io
45 $XFS_IO_PROG -c "pwrite -S 0xcc -b 50K 100K 50K" $SCRATCH_MNT/f | _filter_xfs_io
47 $XFS_IO_PROG -f -c "fpunch 695K 820K" $SCRATCH_MNT/f2
48 $XFS_IO_PROG -c "pwrite -S 0xaa 1008K 307K" $SCRATCH_MNT/f2 | _filter_xfs_io
49 $XFS_IO_PROG -c "pwrite -S 0xbb -b 630K 1073K 630K" $SCRATCH_MNT/f2 \
51 $XFS_IO_PROG -c "pwrite -S 0xcc -b 459K 1068K 459K" $SCRATCH_MNT/f2 \
56 echo "File f contents after remounting filesystem:"
57 od -t x1 $SCRATCH_MNT/f
58 echo "File f2 contents after remounting filesystem:"
59 od -t x1 $SCRATCH_MNT/f2