resize_test.sh revision 213231
1163953Srrs#! /bin/sh 2169382Srrs# 3218319Srrs# $FreeBSD: head/tools/regression/geom_eli/resize.t 213231 2010-09-27 21:10:37Z pjd $ 4218319Srrs 5163953Srrsecho 1..27 6163953Srrs 7163953SrrsBLK=512 8163953SrrsBLKS_PER_MB=2048 9163953Srrs 10163953Srrsmd=$(mdconfig -s40m) || exit 1 11163953Srrsunit=${md#md} 12163953Srrsi=1 13163953Srrs 14163953Srrssetsize() { 15163953Srrs partszMB=$1 unitszMB=$2 16163953Srrs 17163953Srrs { 18163953Srrs echo a: $(($partszMB * $BLKS_PER_MB)) 0 4.2BSD 1024 8192 19163953Srrs echo c: $(($unitszMB * $BLKS_PER_MB)) 0 unused 0 0 20163953Srrs } | disklabel -R $md /dev/stdin 21163953Srrs} 22163953Srrs 23163953Srrs# Initialise 24163953Srrs 25163953Srrskldload geom_eli >/dev/null 2>&1 26163953Srrs 27163953Srrssetsize 10 40 || echo -n "not " 28163953Srrsecho ok $i - "Sized ${md}a to 10m" 29163953Srrsi=$((i + 1)) 30163953Srrs 31163953Srrsecho secret >tmp.key 32163953Srrsgeli init -Bnone -PKtmp.key ${md}a || echo -n "not " 33163953Srrsecho ok $i - "Initialised geli on ${md}a" 34163953Srrsi=$((i + 1)) 35163953Srrsgeli attach -pk tmp.key ${md}a || echo -n "not " 36163953Srrsecho ok $i - "Attached ${md}a as ${md}a.eli" 37163953Srrsi=$((i + 1)) 38163953Srrs 39163953Srrsnewfs -U ${md}a.eli >/dev/null || echo -n "not " 40180387Srrsecho ok $i - "Initialised the filesystem on ${md}a.eli" 41163953Srrsi=$((i + 1)) 42170428Srrsout=$(fsck -tufs -y ${md}a.eli) 43170428Srrsecho "$out" | fgrep -q MODIFIED && echo -n "not " 44170428Srrsecho ok $i - "fsck says ${md}a.eli is clean," $(echo $(echo "$out" | wc -l)) \ 45163953Srrs "lines of output" 46163953Srrsi=$((i + 1)) 47163953Srrs 48163953Srrs 49163953Srrs# Doing a backup, resize & restore must be forced (with -f) as geli 50163953Srrs# verifies that the provider size in the metadata matches the consumer. 51171440Srrs 52163953Srrsgeli backup ${md}a tmp.meta || echo -n "not " 53163953Srrsecho ok $i - "Backed up ${md}a metadata" 54163953Srrsi=$((i + 1)) 55163953Srrs 56163953Srrsgeli detach ${md}a.eli || echo -n "not " 57163953Srrsecho ok $i - "Detached ${md}a.eli" 58163953Srrsi=$((i + 1)) 59163953Srrs 60163953Srrssetsize 20 40 || echo -n "not " 61163953Srrsecho ok $i - "Sized ${md}a to 20m" 62163953Srrsi=$((i + 1)) 63163953Srrsgeli attach -pktmp.key ${md}a && echo -n "not " 64163953Srrsecho ok $i - "Attaching ${md}a fails after resizing the consumer" 65163953Srrsi=$((i + 1)) 66163953Srrs 67163953Srrsgeli restore tmp.meta ${md}a && echo -n "not " 68163953Srrsecho ok $i - "Restoring metadata on ${md}a.eli fails without -f" 69163953Srrsi=$((i + 1)) 70163953Srrsgeli restore -f tmp.meta ${md}a || echo -n "not " 71163953Srrsecho ok $i - "Restoring metadata on ${md}a.eli can be forced" 72163953Srrsi=$((i + 1)) 73163953Srrs 74163953Srrsgeli attach -pktmp.key ${md}a || echo -n "not " 75163953Srrsecho ok $i - "Attaching ${md}a is now possible" 76163953Srrsi=$((i + 1)) 77163953Srrs 78163953Srrsgrowfs -y ${md}a.eli >/dev/null || echo -n "not " 79163953Srrsecho ok $i - "Extended the filesystem on ${md}a.eli" 80163953Srrsi=$((i + 1)) 81163953Srrs 82163953Srrsout=$(fsck -tufs -y ${md}a.eli) 83163953Srrsecho "$out" | fgrep -q MODIFIED && echo -n "not " 84163953Srrsecho ok $i - "fsck says ${md}a.eli is clean," $(echo $(echo "$out" | wc -l)) \ 85163953Srrs "lines of output" 86163953Srrsi=$((i + 1)) 87163953Srrs 88163953Srrs 89172156Srrs# Now do the resize properly 90172091Srrs 91172091Srrsgeli detach ${md}a.eli || echo -n "not " 92172091Srrsecho ok $i - "Detached ${md}a.eli" 93163953Srrsi=$((i + 1)) 94163953Srrs 95163953Srrssetsize 30 40 || echo -n "not " 96163953Srrsecho ok $i - "Sized ${md}a to 30m" 97163953Srrsi=$((i + 1)) 98163953Srrs 99163953Srrsgeli resize -s20m ${md}a || echo -n "not " 100163953Srrsecho ok $i - "Resizing works ok" 101163953Srrsi=$((i + 1)) 102163953Srrsgeli resize -s20m ${md}a && echo -n "not " 103163953Srrsecho ok $i - "Resizing doesn't work a 2nd time (no old metadata)" 104i=$((i + 1)) 105 106geli attach -pktmp.key ${md}a || echo -n "not " 107echo ok $i - "Attaching ${md}a works ok" 108i=$((i + 1)) 109 110growfs -y ${md}a.eli >/dev/null || echo -n "not " 111echo ok $i - "Extended the filesystem on ${md}a.eli" 112i=$((i + 1)) 113 114out=$(fsck -tufs -y ${md}a.eli) 115echo "$out" | fgrep -q MODIFIED && echo -n "not " 116echo ok $i - "fsck says ${md}a.eli is clean," $(echo $(echo "$out" | wc -l)) \ 117 "lines of output" 118i=$((i + 1)) 119 120geli detach ${md}a.eli 121 122 123# Verify that the man page example works, changing ada0 to $md, 124# 1g to 20m, 2g to 30m and keyfile to tmp.key, and adding -B none 125# to geli init. 126 127gpart create -s GPT $md || echo -n "not " 128echo ok $i - "Installed a GPT on ${md}" 129i=$((i + 1)) 130gpart add -s 20m -t freebsd-ufs -i 1 $md || echo -n "not " 131echo ok $i - "Added a 20m partition in slot 1" 132i=$((i + 1)) 133geli init -B none -K tmp.key -P ${md}p1 || echo -n "not " 134echo ok $i - "Initialised geli on ${md}p1" 135i=$((i + 1)) 136gpart resize -s 30m -i 1 $md || echo -n "not " 137echo ok $i - "Resized partition ${md}p1 to 30m" 138i=$((i + 1)) 139geli resize -s 20m ${md}p1 || echo -n "not " 140echo ok $i - "Resized geli on ${md}p1 to 30m" 141i=$((i + 1)) 142geli attach -k tmp.key -p ${md}p1 || echo -n "not " 143echo ok $i - "Attached ${md}p1.eli" 144i=$((i + 1)) 145 146geli detach ${md}p1.eli 147mdconfig -du$unit 148 149rm tmp.* 150