1d9eb18acSPawel Jakub Dawidek#!/bin/sh 2d9eb18acSPawel Jakub Dawidek 3d9eb18acSPawel Jakub Dawidek. $(atf_get_srcdir)/conf.sh 4d9eb18acSPawel Jakub Dawidek 5d9eb18acSPawel Jakub Dawidekatf_test_case online_resize cleanup 6d9eb18acSPawel Jakub Dawidekonline_resize_head() 7d9eb18acSPawel Jakub Dawidek{ 8d9eb18acSPawel Jakub Dawidek atf_set "descr" "online resize of geli providers" 9d9eb18acSPawel Jakub Dawidek atf_set "require.user" "root" 10d9eb18acSPawel Jakub Dawidek} 11d9eb18acSPawel Jakub Dawidekonline_resize_body() 12d9eb18acSPawel Jakub Dawidek{ 13d9eb18acSPawel Jakub Dawidek geli_test_setup 14d9eb18acSPawel Jakub Dawidek 15d9eb18acSPawel Jakub Dawidek ( 16d9eb18acSPawel Jakub Dawidek echo "m 512 none 10485248 1 1 20971008 1 1 31456768 1 1" 17d9eb18acSPawel Jakub Dawidek echo "m 4096 none 10481664 1 1 20967424 1 1 31453184 1 1" 18d9eb18acSPawel Jakub Dawidek echo "m 512 HMAC/SHA256 5242368 1 1 10485248 1 1 15728128 1 1" 19d9eb18acSPawel Jakub Dawidek echo "m 4096 HMAC/SHA256 9318400 1 1 18640896 1 1 27959296 1 1" 20d9eb18acSPawel Jakub Dawidek echo "p 512 none 11258999068425728 [0-9] 20971520 22517998136851968 [0-9] 41943040 33776997205278208 [0-9] 62914560" 21d9eb18acSPawel Jakub Dawidek echo "p 4096 none 11258999068422144 [0-9] 2621440 22517998136848384 [0-9] 5242880 33776997205274624 [0-9] 7864320" 22d9eb18acSPawel Jakub Dawidek echo "p 512 HMAC/SHA256 5629499534212608 [0-9] 20971520 11258999068425728 [0-9] 41943040 16888498602638848 [0-9] 62914560" 23d9eb18acSPawel Jakub Dawidek echo "p 4096 HMAC/SHA256 10007999171932160 [0-9] 20971520 20015998343868416 [0-9] 41943040 30023997515800576 [0-9] 62914560" 24d9eb18acSPawel Jakub Dawidek ) | while read prefix sector auth esize10 ka10 kt10 esize20 ka20 kt20 esize30 ka30 kt30; do 25d9eb18acSPawel Jakub Dawidek if [ "${auth}" = "none" ]; then 26d9eb18acSPawel Jakub Dawidek aalgo="" 27d9eb18acSPawel Jakub Dawidek eflags="0x200" 28d9eb18acSPawel Jakub Dawidek dflags="0x0" 29d9eb18acSPawel Jakub Dawidek else 30d9eb18acSPawel Jakub Dawidek aalgo="-a ${auth}" 31d9eb18acSPawel Jakub Dawidek eflags="0x210" 32d9eb18acSPawel Jakub Dawidek dflags="0x10" 33d9eb18acSPawel Jakub Dawidek fi 34d9eb18acSPawel Jakub Dawidek 35d9eb18acSPawel Jakub Dawidek if [ "${prefix}" = "m" ]; then 36d9eb18acSPawel Jakub Dawidek psize10="10485760" 37d9eb18acSPawel Jakub Dawidek psize20="20971520" 38d9eb18acSPawel Jakub Dawidek psize30="31457280" 39d9eb18acSPawel Jakub Dawidek else 40d9eb18acSPawel Jakub Dawidek psize10="11258999068426240" 41d9eb18acSPawel Jakub Dawidek psize20="22517998136852480" 42d9eb18acSPawel Jakub Dawidek psize30="33776997205278720" 43d9eb18acSPawel Jakub Dawidek fi 44d9eb18acSPawel Jakub Dawidek 4596950419SGleb Smirnoff attach_md md -t malloc -s40${prefix} 46d9eb18acSPawel Jakub Dawidek 47d9eb18acSPawel Jakub Dawidek # Initialise 48d9eb18acSPawel Jakub Dawidek atf_check -s exit:0 -o ignore gpart create -s GPT ${md} 49d9eb18acSPawel Jakub Dawidek atf_check -s exit:0 -o ignore gpart add -t freebsd-ufs -s 10${prefix} ${md} 50d9eb18acSPawel Jakub Dawidek 51d9eb18acSPawel Jakub Dawidek echo secret >tmp.key 52d9eb18acSPawel Jakub Dawidek 53d9eb18acSPawel Jakub Dawidek atf_check geli init ${aalgo} -s ${sector} -Bnone -PKtmp.key ${md}p1 54d9eb18acSPawel Jakub Dawidek # Autoresize is set by default. 55d9eb18acSPawel Jakub Dawidek atf_check -s exit:0 -o match:"flags: ${eflags}$" geli dump ${md}p1 56d9eb18acSPawel Jakub Dawidek 57d9eb18acSPawel Jakub Dawidek atf_check geli configure -R ${md}p1 58d9eb18acSPawel Jakub Dawidek atf_check -s exit:0 -o match:"flags: ${dflags}$" geli dump ${md}p1 59d9eb18acSPawel Jakub Dawidek atf_check geli configure -r ${md}p1 60d9eb18acSPawel Jakub Dawidek atf_check -s exit:0 -o match:"flags: ${eflags}$" geli dump ${md}p1 61d9eb18acSPawel Jakub Dawidek 62d9eb18acSPawel Jakub Dawidek atf_check geli init -R ${aalgo} -s ${sector} -Bnone -PKtmp.key ${md}p1 63d9eb18acSPawel Jakub Dawidek atf_check -s exit:0 -o match:"flags: ${dflags}$" geli dump ${md}p1 64d9eb18acSPawel Jakub Dawidek 65d9eb18acSPawel Jakub Dawidek atf_check geli configure -r ${md}p1 66d9eb18acSPawel Jakub Dawidek atf_check -s exit:0 -o match:"flags: ${eflags}$" geli dump ${md}p1 67d9eb18acSPawel Jakub Dawidek atf_check geli configure -R ${md}p1 68d9eb18acSPawel Jakub Dawidek atf_check -s exit:0 -o match:"flags: ${dflags}$" geli dump ${md}p1 69d9eb18acSPawel Jakub Dawidek 70d9eb18acSPawel Jakub Dawidek atf_check geli init ${aalgo} -s ${sector} -Bnone -PKtmp.key ${md}p1 71d9eb18acSPawel Jakub Dawidek atf_check geli attach -pk tmp.key ${md}p1 72d9eb18acSPawel Jakub Dawidek atf_check -s exit:0 -o match:'^Flags: .*AUTORESIZE' geli list ${md}p1.eli 73d9eb18acSPawel Jakub Dawidek atf_check geli configure -R ${md}p1 74d9eb18acSPawel Jakub Dawidek atf_check -s exit:0 -o match:"flags: ${dflags}$" geli dump ${md}p1 75d9eb18acSPawel Jakub Dawidek atf_check -o not-match:'^Flags: .*AUTORESIZE' geli list ${md}p1.eli 76d9eb18acSPawel Jakub Dawidek atf_check geli configure -r ${md}p1 77d9eb18acSPawel Jakub Dawidek atf_check -s exit:0 -o match:"flags: ${eflags}$" geli dump ${md}p1 78d9eb18acSPawel Jakub Dawidek atf_check -s exit:0 -o match:'^Flags: .*AUTORESIZE' geli list ${md}p1.eli 79d9eb18acSPawel Jakub Dawidek 80d9eb18acSPawel Jakub Dawidek atf_check geli configure -R ${md}p1 81d9eb18acSPawel Jakub Dawidek atf_check -s exit:0 -o match:"provsize: ${psize10}$" geli dump ${md}p1 82d9eb18acSPawel Jakub Dawidek atf_check -s exit:0 -o match:resized gpart resize -i 1 -s 20${prefix} ${md} 83d9eb18acSPawel Jakub Dawidek # Autoresize turned off - we lose metadata. 84d9eb18acSPawel Jakub Dawidek atf_check -s exit:1 -o empty -e ignore geli dump ${md}p1 85d9eb18acSPawel Jakub Dawidek atf_check geli detach ${md}p1.eli 86d9eb18acSPawel Jakub Dawidek # When we recover previous size, the metadata should be there. 87d9eb18acSPawel Jakub Dawidek atf_check -s exit:0 -o match:resized gpart resize -i 1 -s 10${prefix} ${md} 88d9eb18acSPawel Jakub Dawidek atf_check -s exit:0 -o match:"flags: ${dflags}$" geli dump ${md}p1 89d9eb18acSPawel Jakub Dawidek 90d9eb18acSPawel Jakub Dawidek atf_check geli configure -r ${md}p1 91d9eb18acSPawel Jakub Dawidek atf_check geli attach -pk tmp.key ${md}p1 92d9eb18acSPawel Jakub Dawidek atf_check -s exit:0 -o match:"^[[:space:]]${esize10}[[:space:]]+# mediasize in bytes" diskinfo -v ${md}p1.eli 93d9eb18acSPawel Jakub Dawidek atf_check -s exit:0 -o match:"^KeysAllocated: ${ka10}$" geli list ${md}p1.eli 94d9eb18acSPawel Jakub Dawidek atf_check -s exit:0 -o match:"^KeysTotal: ${kt10}$" geli list ${md}p1.eli 95d9eb18acSPawel Jakub Dawidek 96d9eb18acSPawel Jakub Dawidek atf_check -s exit:0 -o match:resized gpart resize -i 1 -s 20${prefix} ${md} 97d9eb18acSPawel Jakub Dawidek atf_check -s exit:0 -o match:"provsize: ${psize20}$" geli dump ${md}p1 98d9eb18acSPawel Jakub Dawidek atf_check -s exit:0 -o match:"^[[:space:]]${esize20}[[:space:]]+# mediasize in bytes" diskinfo -v ${md}p1.eli 99d9eb18acSPawel Jakub Dawidek atf_check -s exit:0 -o match:"^KeysAllocated: ${ka20}$" geli list ${md}p1.eli 100d9eb18acSPawel Jakub Dawidek atf_check -s exit:0 -o match:"^KeysTotal: ${kt20}$" geli list ${md}p1.eli 101d9eb18acSPawel Jakub Dawidek atf_check -s exit:0 -o match:"flags: ${eflags}$" geli dump ${md}p1 102d9eb18acSPawel Jakub Dawidek atf_check -s exit:0 -o match:'^Flags: .*AUTORESIZE' geli list ${md}p1.eli 103d9eb18acSPawel Jakub Dawidek if [ "${prefix}" = "m" ]; then 104d9eb18acSPawel Jakub Dawidek atf_check -s exit:1 -o empty -e match:"^${esize20} bytes transferred " dd if=/dev/random of=/dev/${md}p1.eli bs=1m 105d9eb18acSPawel Jakub Dawidek atf_check -s exit:0 -o empty -e match:"^${esize20} bytes transferred " dd if=/dev/${md}p1.eli of=/dev/null bs=1m 106d9eb18acSPawel Jakub Dawidek fi 107d9eb18acSPawel Jakub Dawidek 108d9eb18acSPawel Jakub Dawidek atf_check -s exit:0 -o match:resized gpart resize -i 1 -s 30${prefix} ${md} 109d9eb18acSPawel Jakub Dawidek atf_check -s exit:0 -o match:"provsize: ${psize30}$" geli dump ${md}p1 110d9eb18acSPawel Jakub Dawidek atf_check -s exit:0 -o match:"^[[:space:]]${esize30}[[:space:]]+# mediasize in bytes" diskinfo -v ${md}p1.eli 111d9eb18acSPawel Jakub Dawidek atf_check -s exit:0 -o match:"^KeysAllocated: ${ka30}$" geli list ${md}p1.eli 112d9eb18acSPawel Jakub Dawidek atf_check -s exit:0 -o match:"^KeysTotal: ${kt30}$" geli list ${md}p1.eli 113d9eb18acSPawel Jakub Dawidek atf_check -s exit:0 -o match:"flags: ${eflags}$" geli dump ${md}p1 114d9eb18acSPawel Jakub Dawidek atf_check -s exit:0 -o match:'^Flags: .*AUTORESIZE' geli list ${md}p1.eli 115d9eb18acSPawel Jakub Dawidek if [ "${prefix}" = "m" ]; then 116d9eb18acSPawel Jakub Dawidek atf_check -s exit:1 -o empty -e match:"^${esize30} bytes transferred " dd if=/dev/random of=/dev/${md}p1.eli bs=1m 117d9eb18acSPawel Jakub Dawidek atf_check -s exit:0 -o empty -e match:"^${esize30} bytes transferred " dd if=/dev/${md}p1.eli of=/dev/null bs=1m 118d9eb18acSPawel Jakub Dawidek fi 119d9eb18acSPawel Jakub Dawidek 120d9eb18acSPawel Jakub Dawidek atf_check geli detach ${md}p1.eli 121d9eb18acSPawel Jakub Dawidek 122d9eb18acSPawel Jakub Dawidek # Make sure that the old metadata is removed. 123d9eb18acSPawel Jakub Dawidek atf_check -s exit:0 -o match:resized gpart resize -i 1 -s 20${prefix} ${md} 124d9eb18acSPawel Jakub Dawidek atf_check -s exit:1 -o empty -e ignore geli dump ${md}p1 125d9eb18acSPawel Jakub Dawidek atf_check -s exit:0 -o match:resized gpart resize -i 1 -s 10${prefix} ${md} 126d9eb18acSPawel Jakub Dawidek atf_check -s exit:1 -o empty -e ignore geli dump ${md}p1 127d9eb18acSPawel Jakub Dawidek 128d9eb18acSPawel Jakub Dawidek # Test geli with onetime keys. 129d9eb18acSPawel Jakub Dawidek if [ "${auth}" = "none" ]; then 130d9eb18acSPawel Jakub Dawidek osize10="${psize10}" 131d9eb18acSPawel Jakub Dawidek osize20="${psize20}" 132d9eb18acSPawel Jakub Dawidek osize30="${psize30}" 133d9eb18acSPawel Jakub Dawidek else 134d9eb18acSPawel Jakub Dawidek osize10="${esize10}" 135d9eb18acSPawel Jakub Dawidek osize20="${esize20}" 136d9eb18acSPawel Jakub Dawidek osize30="${esize30}" 137d9eb18acSPawel Jakub Dawidek if [ "${sector}" -eq 512 ]; then 138d9eb18acSPawel Jakub Dawidek osize10=$((osize10+sector)) 139d9eb18acSPawel Jakub Dawidek osize20=$((osize20+sector)) 140d9eb18acSPawel Jakub Dawidek osize30=$((osize30+sector)) 141d9eb18acSPawel Jakub Dawidek fi 142d9eb18acSPawel Jakub Dawidek fi 143d9eb18acSPawel Jakub Dawidek atf_check geli onetime ${aalgo} -s ${sector} ${md}p1 144d9eb18acSPawel Jakub Dawidek atf_check -s exit:0 -o match:"^[[:space:]]${osize10}[[:space:]]+# mediasize in bytes" diskinfo -v ${md}p1.eli 145d9eb18acSPawel Jakub Dawidek atf_check -s exit:0 -o match:'^Flags: .*AUTORESIZE' geli list ${md}p1.eli 146d9eb18acSPawel Jakub Dawidek atf_check -s exit:0 -o match:resized gpart resize -i 1 -s 20${prefix} ${md} 147d9eb18acSPawel Jakub Dawidek atf_check -s exit:0 -o match:"^[[:space:]]${osize20}[[:space:]]+# mediasize in bytes" diskinfo -v ${md}p1.eli 148d9eb18acSPawel Jakub Dawidek atf_check -s exit:0 -o match:resized gpart resize -i 1 -s 30${prefix} ${md} 149d9eb18acSPawel Jakub Dawidek atf_check -s exit:0 -o match:"^[[:space:]]${osize30}[[:space:]]+# mediasize in bytes" diskinfo -v ${md}p1.eli 150d9eb18acSPawel Jakub Dawidek atf_check geli detach ${md}p1.eli 151d9eb18acSPawel Jakub Dawidek 152d9eb18acSPawel Jakub Dawidek atf_check -s exit:0 -o match:resized gpart resize -i 1 -s 10${prefix} ${md} 153d9eb18acSPawel Jakub Dawidek atf_check geli onetime -R ${aalgo} -s ${sector} ${md}p1 154d9eb18acSPawel Jakub Dawidek atf_check -s exit:0 -o match:"^[[:space:]]${osize10}[[:space:]]+# mediasize in bytes" diskinfo -v ${md}p1.eli 155d9eb18acSPawel Jakub Dawidek atf_check -o not-match:'^Flags: .*AUTORESIZE' geli list ${md}p1.eli 156d9eb18acSPawel Jakub Dawidek atf_check -s exit:0 -o match:resized gpart resize -i 1 -s 20${prefix} ${md} 157d9eb18acSPawel Jakub Dawidek atf_check -s exit:0 -o match:"^[[:space:]]${osize10}[[:space:]]+# mediasize in bytes" diskinfo -v ${md}p1.eli 158d9eb18acSPawel Jakub Dawidek atf_check -s exit:0 -o match:resized gpart resize -i 1 -s 30${prefix} ${md} 159d9eb18acSPawel Jakub Dawidek atf_check -s exit:0 -o match:"^[[:space:]]${osize10}[[:space:]]+# mediasize in bytes" diskinfo -v ${md}p1.eli 160d9eb18acSPawel Jakub Dawidek atf_check geli detach ${md}p1.eli 161d9eb18acSPawel Jakub Dawidek 162d9eb18acSPawel Jakub Dawidek atf_check -s exit:0 -o match:resized gpart resize -i 1 -s 10${prefix} ${md} 163d9eb18acSPawel Jakub Dawidek atf_check geli onetime ${aalgo} -s ${sector} ${md}p1 164d9eb18acSPawel Jakub Dawidek atf_check -s exit:0 -o match:"^[[:space:]]${osize10}[[:space:]]+# mediasize in bytes" diskinfo -v ${md}p1.eli 165d9eb18acSPawel Jakub Dawidek atf_check -s exit:0 -o match:'^Flags: .*AUTORESIZE' geli list ${md}p1.eli 166d9eb18acSPawel Jakub Dawidek atf_check geli configure -R ${md}p1 167d9eb18acSPawel Jakub Dawidek atf_check -o not-match:'^Flags: .*AUTORESIZE' geli list ${md}p1.eli 168d9eb18acSPawel Jakub Dawidek atf_check -s exit:0 -o match:resized gpart resize -i 1 -s 20${prefix} ${md} 169d9eb18acSPawel Jakub Dawidek atf_check -s exit:0 -o match:"^[[:space:]]${osize10}[[:space:]]+# mediasize in bytes" diskinfo -v ${md}p1.eli 170d9eb18acSPawel Jakub Dawidek atf_check geli configure -r ${md}p1 171d9eb18acSPawel Jakub Dawidek atf_check -s exit:0 -o match:'^Flags: .*AUTORESIZE' geli list ${md}p1.eli 172d9eb18acSPawel Jakub Dawidek atf_check -s exit:0 -o match:resized gpart resize -i 1 -s 30${prefix} ${md} 173d9eb18acSPawel Jakub Dawidek atf_check -s exit:0 -o match:"^[[:space:]]${osize30}[[:space:]]+# mediasize in bytes" diskinfo -v ${md}p1.eli 174d9eb18acSPawel Jakub Dawidek done 175d9eb18acSPawel Jakub Dawidek} 176d9eb18acSPawel Jakub Dawidekonline_resize_cleanup() 177d9eb18acSPawel Jakub Dawidek{ 178d9eb18acSPawel Jakub Dawidek if [ -f "$TEST_MDS_FILE" ]; then 179d9eb18acSPawel Jakub Dawidek while read md; do 180724ec898SEnji Cooper atf_check -s ignore -e ignore -o ignore geli detach ${md}p1.eli 181724ec898SEnji Cooper atf_check -s ignore -e ignore -o ignore gpart delete -i 1 ${md} 182724ec898SEnji Cooper atf_check -s ignore -e ignore -o ignore gpart destroy ${md} 183d9eb18acSPawel Jakub Dawidek done < $TEST_MDS_FILE 184d9eb18acSPawel Jakub Dawidek fi 185724ec898SEnji Cooper geli_test_cleanup 186d9eb18acSPawel Jakub Dawidek} 187d9eb18acSPawel Jakub Dawidek 188d9eb18acSPawel Jakub Dawidekatf_init_test_cases() 189d9eb18acSPawel Jakub Dawidek{ 190d9eb18acSPawel Jakub Dawidek atf_add_test_case online_resize 191d9eb18acSPawel Jakub Dawidek} 192