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