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