resize_test.sh revision 324691
1293436Sngie#!/bin/sh
2212934Sbrian# $FreeBSD: stable/11/tests/sys/geom/class/eli/resize_test.sh 324691 2017-10-17 15:52:02Z ngie $
3212934Sbrian
4293436Sngie. $(dirname $0)/conf.sh
5293436Sngie
6212934Sbrianecho 1..27
7212934Sbrian
8212934SbrianBLK=512
9212934SbrianBLKS_PER_MB=2048
10212934Sbrian
11212934Sbrianmd=$(mdconfig -s40m) || exit 1
12212934Sbrianunit=${md#md}
13212934Sbriani=1
14212934Sbrian
15324691Sngiefsck_md()
16324691Sngie{
17324691Sngie	local is_clean
18324691Sngie
19324691Sngie	out=$(fsck_ffs -Ffy ${md}a.eli)
20324691Sngie	if [ $? -eq 0 -o $? -eq 7 ]; then
21324691Sngie		echo "ok $i - fsck says ${md}a.eli is clean"
22324691Sngie	else
23324691Sngie		echo "not ok $i - fsck says ${md}a.eli is dirty"
24324691Sngie	fi
25324691Sngie	i=$((i + 1))
26324691Sngie}
27324691Sngie
28212934Sbriansetsize() {
29212934Sbrian    partszMB=$1 unitszMB=$2
30212934Sbrian
31212934Sbrian    {
32212934Sbrian	echo a: $(($partszMB * $BLKS_PER_MB)) 0 4.2BSD 1024 8192
33212934Sbrian	echo c: $(($unitszMB * $BLKS_PER_MB)) 0 unused 0 0
34212934Sbrian    } | disklabel -R $md /dev/stdin
35212934Sbrian}
36212934Sbrian
37212934Sbrian# Initialise
38212934Sbrian
39212934Sbriansetsize 10 40 || echo -n "not "
40212934Sbrianecho ok $i - "Sized ${md}a to 10m"
41212934Sbriani=$((i + 1))
42212934Sbrian
43212934Sbrianecho secret >tmp.key
44212934Sbriangeli init -Bnone -PKtmp.key ${md}a || echo -n "not "
45212934Sbrianecho ok $i - "Initialised geli on ${md}a"
46212934Sbriani=$((i + 1))
47212934Sbriangeli attach -pk tmp.key ${md}a || echo -n "not "
48212934Sbrianecho ok $i - "Attached ${md}a as ${md}a.eli"
49212934Sbriani=$((i + 1))
50212934Sbrian
51212934Sbriannewfs -U ${md}a.eli >/dev/null || echo -n "not "
52212934Sbrianecho ok $i - "Initialised the filesystem on ${md}a.eli"
53212934Sbriani=$((i + 1))
54324691Sngiefsck_md
55212934Sbrian
56212934Sbrian# Doing a backup, resize & restore must be forced (with -f) as geli
57212934Sbrian# verifies that the provider size in the metadata matches the consumer.
58212934Sbrian
59212934Sbriangeli backup ${md}a tmp.meta || echo -n "not "
60212934Sbrianecho ok $i - "Backed up ${md}a metadata"
61212934Sbriani=$((i + 1))
62212934Sbrian
63212934Sbriangeli detach ${md}a.eli || echo -n "not "
64212934Sbrianecho ok $i - "Detached ${md}a.eli"
65212934Sbriani=$((i + 1))
66212934Sbrian
67212934Sbriansetsize 20 40 || echo -n "not "
68212934Sbrianecho ok $i - "Sized ${md}a to 20m"
69212934Sbriani=$((i + 1))
70212934Sbriangeli attach -pktmp.key ${md}a && echo -n "not "
71212934Sbrianecho ok $i - "Attaching ${md}a fails after resizing the consumer"
72212934Sbriani=$((i + 1))
73212934Sbrian
74212934Sbriangeli restore tmp.meta ${md}a && echo -n "not "
75212934Sbrianecho ok $i - "Restoring metadata on ${md}a.eli fails without -f"
76212934Sbriani=$((i + 1))
77212934Sbriangeli restore -f tmp.meta ${md}a || echo -n "not "
78212934Sbrianecho ok $i - "Restoring metadata on ${md}a.eli can be forced"
79212934Sbriani=$((i + 1))
80212934Sbrian
81212934Sbriangeli attach -pktmp.key ${md}a || echo -n "not "
82212934Sbrianecho ok $i - "Attaching ${md}a is now possible"
83212934Sbriani=$((i + 1))
84212934Sbrian
85212934Sbriangrowfs -y ${md}a.eli >/dev/null || echo -n "not "
86212934Sbrianecho ok $i - "Extended the filesystem on ${md}a.eli"
87212934Sbriani=$((i + 1))
88212934Sbrian
89324691Sngiefsck_md
90212934Sbrian
91212934Sbrian# Now do the resize properly
92212934Sbrian
93212934Sbriangeli detach ${md}a.eli || echo -n "not "
94212934Sbrianecho ok $i - "Detached ${md}a.eli"
95212934Sbriani=$((i + 1))
96212934Sbrian
97212934Sbriansetsize 30 40 || echo -n "not "
98212934Sbrianecho ok $i - "Sized ${md}a to 30m"
99212934Sbriani=$((i + 1))
100212934Sbrian
101212934Sbriangeli resize -s20m ${md}a || echo -n "not "
102212934Sbrianecho ok $i - "Resizing works ok"
103212934Sbriani=$((i + 1))
104212934Sbriangeli resize -s20m ${md}a && echo -n "not "
105212934Sbrianecho ok $i - "Resizing doesn't work a 2nd time (no old metadata)"
106212934Sbriani=$((i + 1))
107212934Sbrian
108212934Sbriangeli attach -pktmp.key ${md}a || echo -n "not "
109212934Sbrianecho ok $i - "Attaching ${md}a works ok"
110212934Sbriani=$((i + 1))
111212934Sbrian
112212934Sbriangrowfs -y ${md}a.eli >/dev/null || echo -n "not "
113212934Sbrianecho ok $i - "Extended the filesystem on ${md}a.eli"
114212934Sbriani=$((i + 1))
115212934Sbrian
116324691Sngiefsck_md
117212934Sbrian
118212934Sbriangeli detach ${md}a.eli
119226729Spjdgpart destroy -F $md >/dev/null
120212934Sbrian
121212934Sbrian
122212934Sbrian# Verify that the man page example works, changing ada0 to $md,
123212934Sbrian# 1g to 20m, 2g to 30m and keyfile to tmp.key, and adding -B none
124212934Sbrian# to geli init.
125212934Sbrian
126213167Spjdgpart create -s GPT $md || echo -n "not "
127213231Spjdecho ok $i - "Installed a GPT on ${md}"
128212934Sbriani=$((i + 1))
129212934Sbriangpart add -s 20m -t freebsd-ufs -i 1 $md || echo -n "not "
130212934Sbrianecho ok $i - "Added a 20m partition in slot 1"
131212934Sbriani=$((i + 1))
132212934Sbriangeli init -B none -K tmp.key -P ${md}p1 || echo -n "not "
133212934Sbrianecho ok $i - "Initialised geli on ${md}p1"
134212934Sbriani=$((i + 1))
135212934Sbriangpart resize -s 30m -i 1 $md || echo -n "not "
136212934Sbrianecho ok $i - "Resized partition ${md}p1 to 30m"
137212934Sbriani=$((i + 1))
138212934Sbriangeli resize -s 20m ${md}p1 || echo -n "not "
139212934Sbrianecho ok $i - "Resized geli on ${md}p1 to 30m"
140212934Sbriani=$((i + 1))
141212934Sbriangeli attach -k tmp.key -p ${md}p1 || echo -n "not "
142212934Sbrianecho ok $i - "Attached ${md}p1.eli"
143212934Sbriani=$((i + 1))
144212934Sbrian
145212934Sbriangeli detach ${md}p1.eli
146212934Sbrian
147212934Sbrianrm tmp.*
148