generic: test MADV_POPULATE_READ with IO errors
[xfstests-dev.git] / tests / xfs / 250
1 #! /bin/bash
2 # SPDX-License-Identifier: GPL-2.0
3 # Copyright (c) 2011 Red Hat, Inc.  All Rights Reserved.
4 #
5 # FS QA Test No. 250
6 #
7 # Bmap btree corruption regression test
8 #
9 . ./common/preamble
10 _begin_fstest auto quick rw prealloc metadata
11
12 # Override the default cleanup function.
13 _cleanup()
14 {
15         cd /
16         umount $LOOP_MNT 2>/dev/null
17         rm -f $LOOP_DEV
18         rmdir $LOOP_MNT
19 }
20
21 # Import common functions.
22 . ./common/filter
23
24 # real QA test starts here
25 _supported_fs xfs
26 _require_test
27 _require_loop
28 _require_xfs_io_command "falloc"
29
30 LOOP_DEV=$TEST_DIR/$seq.fs
31 LOOP_MNT=$TEST_DIR/$seq.mnt
32
33 _filter_io()
34 {
35         sed -e '/.* ops; /d'
36 }
37
38 # real QA test starts here
39
40 echo "*** create loop mount point"
41 rmdir $LOOP_MNT 2>/dev/null
42 mkdir -p $LOOP_MNT || _fail "cannot create loopback mount point"
43
44 _test_loop()
45 {
46         size=$1
47         agsize=$2
48         fsize=$3
49
50         dparam="file,name=$LOOP_DEV,size=$size"
51         if [ -n "$agsize" ]; then
52                 dparam="$dparam,agsize=$agsize"
53         fi
54
55         echo "*** mkfs loop file (size=$size)"
56         $MKFS_XFS_PROG -d $dparam \
57                 | _filter_mkfs 2>/dev/null
58
59         echo "*** mount loop filesystem"
60         mount -t xfs -o loop $LOOP_DEV $LOOP_MNT
61
62         echo "*** preallocate large file"
63         $XFS_IO_PROG -f -c "resvsp 0 $fsize" $LOOP_MNT/foo | _filter_io
64
65         echo "*** unmount loop filesystem"
66         umount $LOOP_MNT > /dev/null 2>&1
67
68         echo "*** check loop filesystem"
69          _check_xfs_filesystem $LOOP_DEV none none
70 }
71
72 _test_loop 50g 16m 40G
73 echo "*** done"
74 status=0
75 exit