1293436Sngie#!/bin/sh 2212934Sbrian# $FreeBSD: releng/11.0/tests/sys/geom/class/eli/resize_test.sh 293821 2016-01-13 09:14:27Z 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 15212934Sbriansetsize() { 16212934Sbrian partszMB=$1 unitszMB=$2 17212934Sbrian 18212934Sbrian { 19212934Sbrian echo a: $(($partszMB * $BLKS_PER_MB)) 0 4.2BSD 1024 8192 20212934Sbrian echo c: $(($unitszMB * $BLKS_PER_MB)) 0 unused 0 0 21212934Sbrian } | disklabel -R $md /dev/stdin 22212934Sbrian} 23212934Sbrian 24212934Sbrian# Initialise 25212934Sbrian 26212934Sbriansetsize 10 40 || echo -n "not " 27212934Sbrianecho ok $i - "Sized ${md}a to 10m" 28212934Sbriani=$((i + 1)) 29212934Sbrian 30212934Sbrianecho secret >tmp.key 31212934Sbriangeli init -Bnone -PKtmp.key ${md}a || echo -n "not " 32212934Sbrianecho ok $i - "Initialised geli on ${md}a" 33212934Sbriani=$((i + 1)) 34212934Sbriangeli attach -pk tmp.key ${md}a || echo -n "not " 35212934Sbrianecho ok $i - "Attached ${md}a as ${md}a.eli" 36212934Sbriani=$((i + 1)) 37212934Sbrian 38212934Sbriannewfs -U ${md}a.eli >/dev/null || echo -n "not " 39212934Sbrianecho ok $i - "Initialised the filesystem on ${md}a.eli" 40212934Sbriani=$((i + 1)) 41212934Sbrianout=$(fsck -tufs -y ${md}a.eli) 42212934Sbrianecho "$out" | fgrep -q MODIFIED && echo -n "not " 43212934Sbrianecho ok $i - "fsck says ${md}a.eli is clean," $(echo $(echo "$out" | wc -l)) \ 44212934Sbrian "lines of output" 45212934Sbriani=$((i + 1)) 46212934Sbrian 47212934Sbrian 48212934Sbrian# Doing a backup, resize & restore must be forced (with -f) as geli 49212934Sbrian# verifies that the provider size in the metadata matches the consumer. 50212934Sbrian 51212934Sbriangeli backup ${md}a tmp.meta || echo -n "not " 52212934Sbrianecho ok $i - "Backed up ${md}a metadata" 53212934Sbriani=$((i + 1)) 54212934Sbrian 55212934Sbriangeli detach ${md}a.eli || echo -n "not " 56212934Sbrianecho ok $i - "Detached ${md}a.eli" 57212934Sbriani=$((i + 1)) 58212934Sbrian 59212934Sbriansetsize 20 40 || echo -n "not " 60212934Sbrianecho ok $i - "Sized ${md}a to 20m" 61212934Sbriani=$((i + 1)) 62212934Sbriangeli attach -pktmp.key ${md}a && echo -n "not " 63212934Sbrianecho ok $i - "Attaching ${md}a fails after resizing the consumer" 64212934Sbriani=$((i + 1)) 65212934Sbrian 66212934Sbriangeli restore tmp.meta ${md}a && echo -n "not " 67212934Sbrianecho ok $i - "Restoring metadata on ${md}a.eli fails without -f" 68212934Sbriani=$((i + 1)) 69212934Sbriangeli restore -f tmp.meta ${md}a || echo -n "not " 70212934Sbrianecho ok $i - "Restoring metadata on ${md}a.eli can be forced" 71212934Sbriani=$((i + 1)) 72212934Sbrian 73212934Sbriangeli attach -pktmp.key ${md}a || echo -n "not " 74212934Sbrianecho ok $i - "Attaching ${md}a is now possible" 75212934Sbriani=$((i + 1)) 76212934Sbrian 77212934Sbriangrowfs -y ${md}a.eli >/dev/null || echo -n "not " 78212934Sbrianecho ok $i - "Extended the filesystem on ${md}a.eli" 79212934Sbriani=$((i + 1)) 80212934Sbrian 81212934Sbrianout=$(fsck -tufs -y ${md}a.eli) 82212934Sbrianecho "$out" | fgrep -q MODIFIED && echo -n "not " 83212934Sbrianecho ok $i - "fsck says ${md}a.eli is clean," $(echo $(echo "$out" | wc -l)) \ 84212934Sbrian "lines of output" 85212934Sbriani=$((i + 1)) 86212934Sbrian 87212934Sbrian 88212934Sbrian# Now do the resize properly 89212934Sbrian 90212934Sbriangeli detach ${md}a.eli || echo -n "not " 91212934Sbrianecho ok $i - "Detached ${md}a.eli" 92212934Sbriani=$((i + 1)) 93212934Sbrian 94212934Sbriansetsize 30 40 || echo -n "not " 95212934Sbrianecho ok $i - "Sized ${md}a to 30m" 96212934Sbriani=$((i + 1)) 97212934Sbrian 98212934Sbriangeli resize -s20m ${md}a || echo -n "not " 99212934Sbrianecho ok $i - "Resizing works ok" 100212934Sbriani=$((i + 1)) 101212934Sbriangeli resize -s20m ${md}a && echo -n "not " 102212934Sbrianecho ok $i - "Resizing doesn't work a 2nd time (no old metadata)" 103212934Sbriani=$((i + 1)) 104212934Sbrian 105212934Sbriangeli attach -pktmp.key ${md}a || echo -n "not " 106212934Sbrianecho ok $i - "Attaching ${md}a works ok" 107212934Sbriani=$((i + 1)) 108212934Sbrian 109212934Sbriangrowfs -y ${md}a.eli >/dev/null || echo -n "not " 110212934Sbrianecho ok $i - "Extended the filesystem on ${md}a.eli" 111212934Sbriani=$((i + 1)) 112212934Sbrian 113212934Sbrianout=$(fsck -tufs -y ${md}a.eli) 114212934Sbrianecho "$out" | fgrep -q MODIFIED && echo -n "not " 115212934Sbrianecho ok $i - "fsck says ${md}a.eli is clean," $(echo $(echo "$out" | wc -l)) \ 116212934Sbrian "lines of output" 117212934Sbriani=$((i + 1)) 118212934Sbrian 119212934Sbriangeli detach ${md}a.eli 120226729Spjdgpart destroy -F $md >/dev/null 121212934Sbrian 122212934Sbrian 123212934Sbrian# Verify that the man page example works, changing ada0 to $md, 124212934Sbrian# 1g to 20m, 2g to 30m and keyfile to tmp.key, and adding -B none 125212934Sbrian# to geli init. 126212934Sbrian 127213167Spjdgpart create -s GPT $md || echo -n "not " 128213231Spjdecho ok $i - "Installed a GPT on ${md}" 129212934Sbriani=$((i + 1)) 130212934Sbriangpart add -s 20m -t freebsd-ufs -i 1 $md || echo -n "not " 131212934Sbrianecho ok $i - "Added a 20m partition in slot 1" 132212934Sbriani=$((i + 1)) 133212934Sbriangeli init -B none -K tmp.key -P ${md}p1 || echo -n "not " 134212934Sbrianecho ok $i - "Initialised geli on ${md}p1" 135212934Sbriani=$((i + 1)) 136212934Sbriangpart resize -s 30m -i 1 $md || echo -n "not " 137212934Sbrianecho ok $i - "Resized partition ${md}p1 to 30m" 138212934Sbriani=$((i + 1)) 139212934Sbriangeli resize -s 20m ${md}p1 || echo -n "not " 140212934Sbrianecho ok $i - "Resized geli on ${md}p1 to 30m" 141212934Sbriani=$((i + 1)) 142212934Sbriangeli attach -k tmp.key -p ${md}p1 || echo -n "not " 143212934Sbrianecho ok $i - "Attached ${md}p1.eli" 144212934Sbriani=$((i + 1)) 145212934Sbrian 146212934Sbriangeli detach ${md}p1.eli 147212934Sbrian 148212934Sbrianrm tmp.* 149