xfs/{019, 031}: make sure we don't set rtinherit=1 on mkfs
[xfstests-dev.git] / tests / xfs / 019
1 #! /bin/bash
2 # SPDX-License-Identifier: GPL-2.0
3 # Copyright (c) 2000-2004 Silicon Graphics, Inc.  All Rights Reserved.
4 #
5 # FS QA Test No. 019
6 #
7 # mkfs protofile test
8 #
9 seq=`basename $0`
10 seqres=$RESULT_DIR/$seq
11 echo "QA output created by $seq"
12
13 here=`pwd`
14 tmp=/tmp/$$
15 seqfull="$seqres.full"
16 status=1        # failure is the default!
17 # get standard environment, filters and checks
18 . ./common/rc
19 . ./common/filter
20
21 _cleanup()
22 {
23     echo "*** unmount"
24     _scratch_unmount 2>/dev/null
25     rm -f $tmp.*
26 }
27 trap "_cleanup; exit \$status" 0 1 2 3 15
28
29 _full()
30 {
31     echo ""            >>$seqfull
32     echo "*** $* ***"  >>$seqfull
33     echo ""            >>$seqfull
34 }
35
36 _filter_stat()
37 {
38     sed '
39         /^Access:/d;
40         /^Modify:/d;
41         /^Change:/d;
42         s/Device: *[0-9][0-9]*,[0-9][0-9]*/Device: <DEVICE>/;
43         s/Inode: *[0-9][0-9]*/Inode: <INODE>/;
44         s/Size: *[0-9][0-9]* *Filetype: Dir/Size: <DSIZE> Filetype: Dir/;
45     ' | tr -s ' '
46 }
47
48 # real QA test starts here
49 _supported_fs xfs
50 _supported_os Linux
51
52 _require_scratch
53
54 # mkfs cannot create a filesystem with protofiles if realtime is enabled, so
55 # don't run this test if the rtinherit is anywhere in the mkfs options.
56 echo "$MKFS_OPTIONS" | grep -q "rtinherit" && \
57         _notrun "Cannot mkfs with a protofile and -d rtinherit."
58
59 protofile=$tmp.proto
60 tempfile=$tmp.file
61
62 echo fish >$tempfile
63 $here/src/devzero -b 2048 -n 2 -c -v 44 $tempfile.2 
64
65 cat >$protofile <<EOF
66 DUMMY1
67 0 0
68 : root directory
69 d--777 3 1
70 : a directory
71 directory d--755 3 1 
72 file_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx_0 ---755 3 1 $tempfile
73 file_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx_1 ---755 3 1 $tempfile
74 file_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx_2 ---755 3 1 $tempfile
75 file_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx_3 ---755 3 1 $tempfile
76 file_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx_4 ---755 3 1 $tempfile
77 $
78 : back in the root
79 setuid -u-666 0 0 $tempfile
80 setgid --g666 0 0 $tempfile
81 setugid -ug666 0 0 $tempfile
82 block_device b--012 3 1 161 162 
83 char_device c--345 3 1 177 178
84 pipe p--670 0 0
85 symlink l--123 0 0 bigfile
86 : a file we actually read
87 bigfile ---666 3 0 $tempfile.2
88 : done
89 $
90 EOF
91
92 if [ $? -ne 0 ]
93 then
94     _fail "failed to create test protofile"
95 fi
96
97 _verify_fs()
98 {
99         echo "*** create FS version $1"
100         VERSION="-n version=$1"
101
102         rm -f $seqfull
103         _scratch_unmount >/dev/null 2>&1
104
105         _full "mkfs"
106         _scratch_mkfs_xfs $VERSION -p $protofile >>$seqfull 2>&1 \
107                 || _fail "mkfs failed"
108
109         echo "*** check FS"
110         _check_scratch_fs
111
112         echo "*** mount FS"
113         _full " mount"
114         _try_scratch_mount >>$seqfull 2>&1 \
115                 || _fail "mount failed"
116
117         echo "*** verify FS"
118         (cd $SCRATCH_MNT ; find . | LC_COLLATE=POSIX sort \
119                 | grep -v ".use_space" \
120                 | xargs $here/src/lstat64 | _filter_stat)
121         diff -q $SCRATCH_MNT/bigfile $tempfile.2 \
122                 || _fail "bigfile corrupted"
123
124         echo "*** unmount FS"
125         _full "umount"
126         _scratch_unmount >>$seqfull 2>&1 \
127                 || _fail "umount failed"
128 }
129
130 #_verify_fs 1
131 _verify_fs 2
132
133 echo "*** done"
134 rm $seqfull
135 status=0
136 exit