Path: blob/main/tests/sys/geom/class/eli/reentrancy_test.sh
39636 views
1# Test various operations for geli-on-geli providers, to ensure that geli is2# reentrant.34. $(atf_get_srcdir)/conf.sh56init_test()7{8cipher=$19aalgo=$210secsize=$311ealgo=${cipher%%:*}12keylen=${cipher##*:}1314atf_check dd if=/dev/random of=testdata bs=$secsize count=1 status=none15atf_check dd if=/dev/random of=keyfile bs=$secsize count=16 status=none1617# Create the lower geli device18atf_check -s exit:0 -e ignore \19geli init -B none -a $aalgo -e $ealgo -l $keylen -P -K keyfile \20-s $secsize ${md}21atf_check geli attach -p -k keyfile ${md}22# Create the upper geli device23atf_check -s exit:0 -e ignore \24geli init -B none -a $aalgo -e $ealgo -l $keylen -P -K keyfile \25-s $secsize ${md}.eli26atf_check geli attach -p -k keyfile ${md}.eli27echo ${md} > layered_md_device2829# Ensure we can read and write.30atf_check dd if=testdata of=/dev/${md}.eli.eli bs=$secsize count=1 \31status=none32atf_check dd if=/dev/${md}.eli.eli of=cmpdata bs=$secsize count=1 \33status=none34atf_check cmp -s testdata cmpdata3536geli detach ${md}.eli 2>/dev/null37}3839atf_test_case init cleanup40init_head()41{42atf_set "descr" "Initialize a geli provider on top of another"43atf_set "require.user" "root"44atf_set "timeout" 60045}46init_body()47{48sectors=249geli_test_setup5051for_each_geli_config init_test52}53init_cleanup()54{55if [ -f layered_md_device ]; then56while read provider; do57[ -c /dev/${md}.eli.eli ] && \58geli detach $md.eli.eli 2>/dev/null59done < layered_md_device60fi61geli_test_cleanup62}6364atf_init_test_cases()65{66atf_add_test_case init67}686970