1f397a004SAlan Somers 2cf551b8aSAlan Somers. $(atf_get_srcdir)/conf.sh 3cf551b8aSAlan Somers 4f397a004SAlan Somersatf_test_case detach_l cleanup 5f397a004SAlan Somersdetach_l_head() 6f397a004SAlan Somers{ 7f397a004SAlan Somers atf_set "descr" "geli detach -l will cause a provider to detach on last close" 8f397a004SAlan Somers atf_set "require.user" "root" 9f397a004SAlan Somers} 10f397a004SAlan Somersdetach_l_body() 11f397a004SAlan Somers{ 12cf551b8aSAlan Somers geli_test_setup 13f397a004SAlan Somers 14f397a004SAlan Somers sectors=100 15*96950419SGleb Smirnoff attach_md md -t malloc -s `expr $sectors + 1` 16f397a004SAlan Somers 17f397a004SAlan Somers atf_check dd if=/dev/random of=keyfile bs=512 count=16 status=none 18f397a004SAlan Somers 19f397a004SAlan Somers atf_check geli init -B none -P -K keyfile ${md} 20f397a004SAlan Somers atf_check geli attach -p -k keyfile ${md} 21f397a004SAlan Somers 22f397a004SAlan Somers # Be sure it doesn't detach before 'detach -l'. 23f397a004SAlan Somers atf_check dd if=/dev/${md}.eli of=/dev/null status=none 24f397a004SAlan Somers sleep 1 25f397a004SAlan Somers if [ ! -c /dev/${md}.eli ]; then 26f397a004SAlan Somers atf_fail "provider detached on last close without detach -l" 27f397a004SAlan Somers fi 28f397a004SAlan Somers atf_check geli detach -l ${md} 29f397a004SAlan Somers if [ ! -c /dev/${md}.eli ]; then 30f397a004SAlan Somers atf_fail "Provider detached before last close" 31f397a004SAlan Somers fi 32f397a004SAlan Somers atf_check dd if=/dev/${md}.eli of=/dev/null status=none 33f397a004SAlan Somers sleep 1 34f397a004SAlan Somers if [ -c /dev/${md}.eli ]; then 35f397a004SAlan Somers atf_fail "Provider did not detach on last close" 36f397a004SAlan Somers fi 37f397a004SAlan Somers} 38f397a004SAlan Somersdetach_l_cleanup() 39f397a004SAlan Somers{ 40f397a004SAlan Somers geli_test_cleanup 41f397a004SAlan Somers} 42f397a004SAlan Somers 43f397a004SAlan Somersatf_init_test_cases() 44f397a004SAlan Somers{ 45f397a004SAlan Somers atf_add_test_case detach_l 46f397a004SAlan Somers} 47