generic: test MADV_POPULATE_READ with IO errors
[xfstests-dev.git] / tests / generic / 439
1 #! /bin/bash
2 # SPDX-License-Identifier: GPL-2.0
3 # Copyright (C) 2017 SUSE Linux Products GmbH. All Rights Reserved.
4 #
5 # FS QA Test No. generic/439
6 #
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.
12 #
13 . ./common/preamble
14 _begin_fstest auto quick punch
15
16 # Import common functions.
17 . ./common/filter
18
19 # real QA test starts here
20 _supported_fs generic
21 _require_test
22 _require_scratch
23 _require_xfs_io_command "fpunch"
24
25 _scratch_mkfs >>$seqres.full 2>&1
26 _scratch_mount
27
28 $XFS_IO_PROG -f -c "pwrite -S 0xaa 0 100K" $SCRATCH_MNT/f | _filter_xfs_io
29 $XFS_IO_PROG -c "fpunch 60K 90K" $SCRATCH_MNT/f
30 $XFS_IO_PROG -c "pwrite -S 0xbb -b 100K 50K 100K" $SCRATCH_MNT/f | _filter_xfs_io
31 $XFS_IO_PROG -c "pwrite -S 0xcc -b 50K 100K 50K" $SCRATCH_MNT/f | _filter_xfs_io
32
33 $XFS_IO_PROG -f -c "fpunch 695K 820K" $SCRATCH_MNT/f2
34 $XFS_IO_PROG -c "pwrite -S 0xaa 1008K 307K" $SCRATCH_MNT/f2 |  _filter_xfs_io
35 $XFS_IO_PROG -c "pwrite -S 0xbb -b 630K 1073K 630K" $SCRATCH_MNT/f2 \
36         | _filter_xfs_io
37 $XFS_IO_PROG -c "pwrite -S 0xcc -b 459K 1068K 459K" $SCRATCH_MNT/f2 \
38         | _filter_xfs_io
39
40 _scratch_cycle_mount
41
42 echo "File f contents after remounting filesystem:"
43 od -t x1 $SCRATCH_MNT/f
44 echo "File f2 contents after remounting filesystem:"
45 od -t x1 $SCRATCH_MNT/f2
46
47 status=0
48 exit