resize_test.sh revision 328811
1293436Sngie#!/bin/sh
2212934Sbrian# $FreeBSD: stable/11/tests/sys/geom/class/eli/resize_test.sh 328811 2018-02-02 21:57:00Z asomers $
3212934Sbrian
4328811Sasomersatf_test_case resize cleanup
5328811Sasomersresize_head()
6324691Sngie{
7328811Sasomers	atf_set "descr" "geli resize will resize a geli provider"
8328811Sasomers	atf_set "require.user" "root"
9324691Sngie}
10328811Sasomersresize_body()
11328811Sasomers{
12328811Sasomers	. $(atf_get_srcdir)/conf.sh
13328811Sasomers	BLK=512
14328811Sasomers	BLKS_PER_MB=2048
15324691Sngie
16328811Sasomers	md=$(attach_md -t malloc -s40m)
17212934Sbrian
18328811Sasomers	# Initialise
19328811Sasomers	atf_check -s exit:0 -o ignore gpart create -s BSD ${md}
20328811Sasomers	atf_check -s exit:0 -o ignore gpart add -t freebsd-ufs -s 10m ${md}
21212934Sbrian
22328811Sasomers	echo secret >tmp.key
23328811Sasomers	atf_check geli init -Bnone -PKtmp.key ${md}a
24328811Sasomers	atf_check geli attach -pk tmp.key ${md}a
25212934Sbrian
26328811Sasomers	atf_check -s exit:0 -o ignore newfs -U ${md}a.eli
27328811Sasomers	atf_check -s exit:7 -o ignore fsck_ffs -Ffy ${md}a.eli
28212934Sbrian
29328811Sasomers	# Doing a backup, resize & restore must be forced (with -f) as geli
30328811Sasomers	# verifies that the provider size in the metadata matches the consumer.
31212934Sbrian
32328811Sasomers	atf_check geli backup ${md}a tmp.meta
33328811Sasomers	atf_check geli detach ${md}a.eli
34328811Sasomers	atf_check -s exit:0 -o match:resized gpart resize -i1 -s 20m ${md}
35328811Sasomers	atf_check -s not-exit:0 -e ignore geli attach -pktmp.key ${md}a
36328811Sasomers	atf_check -s not-exit:0 -e ignore geli restore tmp.meta ${md}a
37328811Sasomers	atf_check geli restore -f tmp.meta ${md}a
38328811Sasomers	atf_check geli attach -pktmp.key ${md}a
39328811Sasomers	atf_check -s exit:0 -o ignore growfs -y ${md}a.eli
40328811Sasomers	atf_check -s exit:7 -o ignore fsck_ffs -Ffy ${md}a.eli
41212934Sbrian
42328811Sasomers	# Now do the resize properly
43212934Sbrian
44328811Sasomers	atf_check geli detach ${md}a.eli
45328811Sasomers	atf_check -s exit:0 -o match:resized gpart resize -i1 -s 30m ${md}
46328811Sasomers	atf_check geli resize -s20m ${md}a
47328811Sasomers	atf_check -s not-exit:0 -e match:"Inconsistent provider.*metadata" \
48328811Sasomers		geli resize -s20m ${md}a
49328811Sasomers	atf_check geli attach -pktmp.key ${md}a
50328811Sasomers	atf_check -s exit:0 -o ignore growfs -y ${md}a.eli
51328811Sasomers	atf_check -s exit:7 -o ignore fsck_ffs -Ffy ${md}a.eli
52212934Sbrian
53328811Sasomers	atf_check geli detach ${md}a.eli
54328811Sasomers	atf_check -s exit:0 -o ignore gpart destroy -F $md
55212934Sbrian
56212934Sbrian
57328811Sasomers	# Verify that the man page example works, changing ada0 to $md,
58328811Sasomers	# 1g to 20m, 2g to 30m and keyfile to tmp.key, and adding -B none
59328811Sasomers	# to geli init.
60212934Sbrian
61328811Sasomers	atf_check -s exit:0 -o ignore gpart create -s GPT $md
62328811Sasomers	atf_check -s exit:0 -o ignore gpart add -s 20m -t freebsd-ufs -i 1 $md
63328811Sasomers	atf_check geli init -B none -K tmp.key -P ${md}p1
64328811Sasomers	atf_check -s exit:0 -o match:resized gpart resize -s 30m -i 1 $md
65328811Sasomers	atf_check geli resize -s 20m ${md}p1
66328811Sasomers	atf_check geli attach -k tmp.key -p ${md}p1
67328811Sasomers}
68328811Sasomersresize_cleanup()
69328811Sasomers{
70328811Sasomers	. $(atf_get_srcdir)/conf.sh
71212934Sbrian
72328811Sasomers	if [ -f "$TEST_MDS_FILE" ]; then
73328811Sasomers		while read md; do
74328811Sasomers			[ -c /dev/${md}a.eli ] && \
75328811Sasomers				geli detach ${md}a.eli 2>/dev/null
76328811Sasomers			[ -c /dev/${md}p1.eli ] && \
77328811Sasomers				geli detach ${md}p1.eli
78328811Sasomers			[ -c /dev/${md}.eli ] && \
79328811Sasomers				geli detach ${md}.eli 2>/dev/null
80328811Sasomers			mdconfig -d -u $md 2>/dev/null
81328811Sasomers		done < $TEST_MDS_FILE
82328811Sasomers	fi
83328811Sasomers}
84212934Sbrian
85328811Sasomersatf_init_test_cases()
86328811Sasomers{
87328811Sasomers	atf_add_test_case resize
88328811Sasomers}
89