1327662Sasomers# $FreeBSD: stable/11/tests/sys/geom/class/eli/attach_test.sh 345394 2019-03-21 22:23:52Z asomers $ 2327662Sasomers 3345394Sasomers. $(atf_get_srcdir)/conf.sh 4345394Sasomers 5327662Sasomersatf_test_case attach_d cleanup 6327662Sasomersattach_d_head() 7327662Sasomers{ 8327662Sasomers atf_set "descr" "geli attach -d will cause the provider to detach on last close" 9327662Sasomers atf_set "require.user" "root" 10327662Sasomers} 11327662Sasomersattach_d_body() 12327662Sasomers{ 13345394Sasomers geli_test_setup 14327662Sasomers 15327662Sasomers sectors=100 16327662Sasomers md=$(attach_md -t malloc -s `expr $sectors + 1`) 17327662Sasomers 18327662Sasomers atf_check dd if=/dev/random of=keyfile bs=512 count=16 status=none 19327662Sasomers 20327662Sasomers atf_check geli init -B none -P -K keyfile ${md} 21327662Sasomers atf_check geli attach -d -p -k keyfile ${md} 22327662Sasomers 23327662Sasomers # Be sure it doesn't detach on read. 24327662Sasomers atf_check dd if=/dev/${md}.eli of=/dev/null status=none 25327662Sasomers sleep 1 26327662Sasomers if [ ! -c /dev/${md}.eli ]; then 27327662Sasomers atf_fail "Detached on last close of a reader" 28327662Sasomers fi 29327662Sasomers 30327662Sasomers # It should detach on last close of a writer 31327662Sasomers true > /dev/${md}.eli 32327662Sasomers sleep 1 33327662Sasomers if [ -c /dev/${md}.eli ]; then 34327662Sasomers atf_fail "Did not detach on last close of a writer" 35327662Sasomers fi 36327662Sasomers 37327662Sasomers} 38327662Sasomersattach_d_cleanup() 39327662Sasomers{ 40327662Sasomers geli_test_cleanup 41327662Sasomers} 42327662Sasomers 43328811Sasomersatf_test_case attach_r cleanup 44328811Sasomersattach_r_head() 45328811Sasomers{ 46328811Sasomers atf_set "descr" "geli attach -r will create a readonly provider" 47328811Sasomers atf_set "require.user" "root" 48328811Sasomers} 49328811Sasomersattach_r_body() 50328811Sasomers{ 51345394Sasomers geli_test_setup 52328811Sasomers 53328811Sasomers sectors=100 54328811Sasomers md=$(attach_md -t malloc -s `expr $sectors + 1`) 55328811Sasomers atf_check dd if=/dev/random of=keyfile bs=512 count=16 status=none 56328811Sasomers 57328811Sasomers atf_check geli init -B none -P -K keyfile ${md} 58328811Sasomers atf_check geli attach -r -p -k keyfile ${md} 59328811Sasomers 60328811Sasomers atf_check -o match:"^Flags: .*READ-ONLY" geli list ${md}.eli 61328811Sasomers 62328811Sasomers # Verify that writes are verbotten 63328811Sasomers atf_check -s not-exit:0 -e match:"Read-only" \ 64328811Sasomers dd if=/dev/zero of=/dev/${md}.eli count=1 65328811Sasomers} 66328811Sasomersattach_r_cleanup() 67328811Sasomers{ 68328811Sasomers geli_test_cleanup 69328811Sasomers} 70328811Sasomers 71328811Sasomersatf_test_case nokey cleanup 72328811Sasomersnokey_head() 73328811Sasomers{ 74328811Sasomers atf_set "descr" "geli attach fails if called with no key component" 75328811Sasomers atf_set "require.user" "root" 76328811Sasomers} 77328811Sasomersnokey_body() 78328811Sasomers{ 79345394Sasomers geli_test_setup 80328811Sasomers 81328811Sasomers sectors=100 82328811Sasomers md=$(attach_md -t malloc -s `expr $sectors + 1`) 83328811Sasomers atf_check dd if=/dev/random of=keyfile bs=512 count=16 status=none 84328811Sasomers 85328811Sasomers atf_check geli init -B none -P -K keyfile ${md} 86328811Sasomers atf_check -s not-exit:0 -e match:"No key components given" \ 87328811Sasomers geli attach -p ${md} 2>/dev/null 88328811Sasomers} 89328811Sasomersnokey_cleanup() 90328811Sasomers{ 91328811Sasomers geli_test_cleanup 92328811Sasomers} 93328811Sasomers 94327662Sasomersatf_init_test_cases() 95327662Sasomers{ 96327662Sasomers atf_add_test_case attach_d 97328811Sasomers atf_add_test_case attach_r 98328811Sasomers atf_add_test_case nokey 99327662Sasomers} 100