blob: 73833e0b7fee4820156469341240a9c1a6d18ffb (
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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
|
#!/bin/sh
# $FreeBSD$
TMP=/tmp/$$.
set -e
MD=`mdconfig -a -t malloc -s 2m`
trap "exec 7</dev/null; rm -f ${TMP}* ; mdconfig -d -u ${MD}" EXIT INT TERM
./sunlabel -r -w $MD auto
dd if=/dev/$MD of=${TMP}i0 count=16 > /dev/null 2>&1
./sunlabel $MD > ${TMP}l0
sed '
/ c:/{
p
s/c:/a:/
s/3969/1024/
}
' ${TMP}l0 > ${TMP}l1
./sunlabel -R $MD ${TMP}l1
if [ -c /dev/${MD}a ] ; then
echo "PASS: Created a: partition" 1>&2
else
echo "FAIL: Did not create a: partition" 1>&2
exit 2
fi
# Spoil and rediscover
true > /dev/${MD}
if [ -c /dev/${MD}a ] ; then
echo "PASS: Recreated a: partition after spoilage" 1>&2
else
echo "FAIL: Did not recreate a: partition after spoilage" 1>&2
exit 2
fi
dd if=/dev/$MD of=${TMP}i1 count=16 > /dev/null 2>&1
sed '
/ c:/{
p
s/c:/a:/
s/3969/2048/
}
' ${TMP}l0 > ${TMP}l2
./sunlabel -R $MD ${TMP}l2
dd if=/dev/$MD of=${TMP}i2 count=16 > /dev/null 2>&1
exec 7< /dev/${MD}a
for t in a c
do
if dd if=${TMP}i2 of=/dev/${MD}$t 2>/dev/null ; then
echo "PASS: Could rewrite same label to ...$t while ...a open" 1>&2
else
echo "FAIL: Could not rewrite same label to ...$t while ...a open" 1>&2
exit 2
fi
if dd if=${TMP}i1 of=/dev/${MD}$t 2>/dev/null ; then
echo "FAIL: Could label with smaller ...a to ...$t while ...a open" 1>&2
exit 2
else
echo "PASS: Could not label with smaller ...a to ...$t while ...a open" 1>&2
fi
if dd if=${TMP}i0 of=/dev/${MD}$t 2>/dev/null ; then
echo "FAIL: Could write label missing ...a to ...$t while ...a open" 1>&2
exit 2
else
echo "PASS: Could not write label missing ...a to ...$t while ...a open" 1>&2
fi
done
exec 7< /dev/null
if dd if=${TMP}i0 of=/dev/${MD}c 2>/dev/null ; then
echo "PASS: Could write missing ...a label to ...c" 1>&2
else
echo "FAIL: Could not write missing ...a label to ...c" 1>&2
exit 2
fi
if dd if=${TMP}i2 of=/dev/${MD}c 2>/dev/null ; then
echo "PASS: Could write large ...a label to ...c" 1>&2
else
echo "FAIL: Could not write large ...a label to ...c" 1>&2
exit 2
fi
if dd if=${TMP}i1 of=/dev/${MD}c 2>/dev/null ; then
echo "PASS: Could write small ...a label to ...c" 1>&2
else
echo "FAIL: Could not write small ...a label to ...c" 1>&2
exit 2
fi
if dd if=${TMP}i2 of=/dev/${MD}a 2>/dev/null ; then
echo "PASS: Could increase size of ...a by writing to ...a" 1>&2
else
echo "FAIL: Could not increase size of ...a by writing to ...a" 1>&2
exit 2
fi
if dd if=${TMP}i1 of=/dev/${MD}a 2>/dev/null ; then
echo "FAIL: Could decrease size of ...a by writing to ...a" 1>&2
exit 2
else
echo "PASS: Could not decrease size of ...a by writing to ...a" 1>&2
fi
if dd if=${TMP}i0 of=/dev/${MD}a 2>/dev/null ; then
echo "FAIL: Could delete ...a by writing to ...a" 1>&2
exit 2
else
echo "PASS: Could not delete ...a by writing to ...a" 1>&2
fi
if ./sunlabel -B -b ${TMP}i0 ${MD} ; then
if [ ! -c /dev/${MD}a ] ; then
echo "FAILED: Writing bootcode killed ...a" 1>&2
exit 2
else
echo "PASS: Could write bootcode while closed" 1>&2
fi
else
echo "FAILED: Could not write bootcode while closed" 1>&2
exit 2
fi
exec 7> /dev/${MD}c
if ktrace ./sunlabel -B -b ${TMP}i0 ${MD} ; then
if [ ! -c /dev/${MD}a ] ; then
echo "FAILED: Writing bootcode killed ...a" 1>&2
exit 2
else
echo "PASS: Could write bootcode while open" 1>&2
fi
else
echo "FAILED: Could not write bootcode while open" 1>&2
exit 2
fi
exec 7> /dev/null
if dd if=${TMP}i0 of=/dev/${MD}c 2>/dev/null ; then
echo "PASS: Could delete ...a by writing to ...c" 1>&2
else
echo "FAIL: Could not delete ...a by writing to ...c" 1>&2
exit 2
fi
# XXX: need to add a 'b' partition and check for overlaps.
exit 0
|