1162432Spjd#!/bin/sh
2162432Spjd# $FreeBSD: releng/11.0/tests/sys/geom/class/eli/readonly_test.sh 293821 2016-01-13 09:14:27Z ngie $
3162432Spjd
4293436Sngie. $(dirname $0)/conf.sh
5293436Sngie
6162432Spjdbase=`basename $0`
7162432Spjdsectors=100
8293436Sngiekeyfile=`mktemp $base.XXXXXX` || exit 1
9162432Spjdmdconfig -a -t malloc -s `expr $sectors + 1` -u $no || exit 1
10162432Spjd
11162432Spjdecho "1..11"
12162432Spjd
13162432Spjddd if=/dev/random of=${keyfile} bs=512 count=16 >/dev/null 2>&1
14162432Spjd
15182452Spjdgeli init -B none -P -K $keyfile md${no}
16162432Spjdif [ $? -eq 0 ]; then
17162432Spjd	echo "ok 1"
18162432Spjdelse
19162432Spjd	echo "not ok 1"
20162432Spjdfi
21162432Spjd
22162432Spjdgeli attach -r -p -k $keyfile md${no}
23162432Spjdif [ $? -eq 0 ]; then
24162432Spjd	echo "ok 2"
25162432Spjdelse
26162432Spjd	echo "not ok 2"
27162432Spjdfi
28162432Spjd
29162432Spjdsh -c "true >/dev/md${no}.eli" 2>/dev/null
30162432Spjdif [ $? -ne 0 ]; then
31162432Spjd	echo "ok 3"
32162432Spjdelse
33162432Spjd	echo "not ok 3"
34162432Spjdfi
35162432Spjd
36162432Spjdgeli kill md${no}
37162432Spjdif [ $? -eq 0 ]; then
38162432Spjd	echo "ok 4"
39162432Spjdelse
40162432Spjd	echo "not ok 4"
41162432Spjdfi
42162432Spjd
43162432Spjd# kill should detach provider...
44162432Spjdif [ ! -c /dev/md{$no}.eli ]; then
45162432Spjd	echo "ok 5"
46162432Spjdelse
47162432Spjd	echo "not ok 5"
48162432Spjdfi
49162432Spjd
50162432Spjd# ...but not destroy the metadata.
51162432Spjdgeli attach -r -p -k $keyfile md${no}
52162432Spjdif [ $? -eq 0 ]; then
53162432Spjd	echo "ok 6"
54162432Spjdelse
55162432Spjd	echo "not ok 6"
56162432Spjdfi
57162432Spjd
58162432Spjdgeli setkey -n 1 -P -K /dev/null md${no} 2>/dev/null
59162432Spjdif [ $? -ne 0 ]; then
60162432Spjd	echo "ok 7"
61162432Spjdelse
62162432Spjd	echo "not ok 7"
63162432Spjdfi
64162432Spjd
65162432Spjdgeli delkey -n 0 md${no} 2>/dev/null
66162432Spjdif [ $? -ne 0 ]; then
67162432Spjd	echo "ok 8"
68162432Spjdelse
69162432Spjd	echo "not ok 8"
70162432Spjdfi
71162432Spjd
72162432Spjdgeli delkey -f -n 0 md${no} 2>/dev/null
73162432Spjdif [ $? -ne 0 ]; then
74162432Spjd	echo "ok 9"
75162432Spjdelse
76162432Spjd	echo "not ok 9"
77162432Spjdfi
78162432Spjd
79162432Spjdgeli list md${no}.eli | egrep '^Flags: .*READ-ONLY' >/dev/null
80162432Spjdif [ $? -eq 0 ]; then
81162432Spjd	echo "ok 10"
82162432Spjdelse
83162432Spjd	echo "not ok 10"
84162432Spjdfi
85162432Spjd
86162432Spjdgeli detach md${no}
87162432Spjdif [ $? -eq 0 ]; then
88162432Spjd	echo "ok 11"
89162432Spjdelse
90162432Spjd	echo "not ok 11"
91162432Spjdfi
92162432Spjd
93162432Spjdmdconfig -d -u $no
94162432Spjdrm -f $keyfile
95