1*7affbeeaSRyan Libby# 2*7affbeeaSRyan Libby# Copyright (c) 2024 Dell Inc. or its subsidiaries. All Rights Reserved. 3*7affbeeaSRyan Libby# 4*7affbeeaSRyan Libby# SPDX-License-Identifier: BSD-2-Clause 5*7affbeeaSRyan Libby# 6*7affbeeaSRyan Libby 7*7affbeeaSRyan Libby. $(atf_get_srcdir)/conf.sh 8*7affbeeaSRyan Libby 9*7affbeeaSRyan Libbyatf_test_case basic cleanup 10*7affbeeaSRyan Libbybasic_head() 11*7affbeeaSRyan Libby{ 12*7affbeeaSRyan Libby atf_set "descr" "geom virstor basic functional test" 13*7affbeeaSRyan Libby atf_set "require.user" "root" 14*7affbeeaSRyan Libby} 15*7affbeeaSRyan Libbybasic_body() 16*7affbeeaSRyan Libby{ 17*7affbeeaSRyan Libby geom_atf_test_setup 18*7affbeeaSRyan Libby # Choose a virstor device name 19*7affbeeaSRyan Libby gvirstor_dev_setup name 20*7affbeeaSRyan Libby 21*7affbeeaSRyan Libby # Create an md backing device and initialize it with junk 22*7affbeeaSRyan Libby psecsize=512 23*7affbeeaSRyan Libby attach_md md -t swap -S $psecsize -s 5M || atf_fail "attach_md" 24*7affbeeaSRyan Libby jot -b uninitialized 0 | dd status=none of=/dev/$md 2> /dev/null 25*7affbeeaSRyan Libby 26*7affbeeaSRyan Libby # Create a virstor device 27*7affbeeaSRyan Libby vsizemb=64 28*7affbeeaSRyan Libby vsize=$((vsizemb * 1024 * 1024)) 29*7affbeeaSRyan Libby atf_check -o ignore -e ignore \ 30*7affbeeaSRyan Libby gvirstor label -v -s ${vsizemb}M -m 512 $name /dev/$md 31*7affbeeaSRyan Libby devwait 32*7affbeeaSRyan Libby vdev="/dev/$class/$name" 33*7affbeeaSRyan Libby 34*7affbeeaSRyan Libby ssize=$(diskinfo $vdev | awk '{print $2}') 35*7affbeeaSRyan Libby atf_check_equal $psecsize $ssize 36*7affbeeaSRyan Libby 37*7affbeeaSRyan Libby size=$(diskinfo $vdev | awk '{print $3}') 38*7affbeeaSRyan Libby atf_check_equal $vsize $size 39*7affbeeaSRyan Libby 40*7affbeeaSRyan Libby # Write the first and last sectors of the virtual address space 41*7affbeeaSRyan Libby hasha=$(jot -b a 0 | head -c $ssize | sha1) 42*7affbeeaSRyan Libby hashz=$(jot -b z 0 | head -c $ssize | sha1) 43*7affbeeaSRyan Libby zsector=$((vsize / ssize - 1)) 44*7affbeeaSRyan Libby jot -b a 0 | dd status=none of=$vdev bs=$ssize count=1 conv=notrunc 45*7affbeeaSRyan Libby jot -b z 0 | dd status=none of=$vdev bs=$ssize count=1 conv=notrunc \ 46*7affbeeaSRyan Libby seek=$zsector 47*7affbeeaSRyan Libby 48*7affbeeaSRyan Libby # Read back and compare 49*7affbeeaSRyan Libby hashx=$(dd status=none if=$vdev bs=$ssize count=1 | sha1) 50*7affbeeaSRyan Libby atf_check_equal $hasha $hashx 51*7affbeeaSRyan Libby hashx=$(dd status=none if=$vdev bs=$ssize count=1 skip=$zsector | sha1) 52*7affbeeaSRyan Libby atf_check_equal $hashz $hashx 53*7affbeeaSRyan Libby 54*7affbeeaSRyan Libby # Destroy, then retaste and reload 55*7affbeeaSRyan Libby atf_check -o ignore gvirstor destroy $name 56*7affbeeaSRyan Libby true > /dev/$md 57*7affbeeaSRyan Libby devwait 58*7affbeeaSRyan Libby 59*7affbeeaSRyan Libby # Read back and compare 60*7affbeeaSRyan Libby hashx=$(dd status=none if=$vdev bs=$ssize count=1 | sha1) 61*7affbeeaSRyan Libby atf_check_equal $hasha $hashx 62*7affbeeaSRyan Libby hashx=$(dd status=none if=$vdev bs=$ssize count=1 skip=$zsector | sha1) 63*7affbeeaSRyan Libby atf_check_equal $hashz $hashx 64*7affbeeaSRyan Libby} 65*7affbeeaSRyan Libbybasic_cleanup() 66*7affbeeaSRyan Libby{ 67*7affbeeaSRyan Libby gvirstor_test_cleanup 68*7affbeeaSRyan Libby} 69*7affbeeaSRyan Libby 70*7affbeeaSRyan Libbyatf_init_test_cases() 71*7affbeeaSRyan Libby{ 72*7affbeeaSRyan Libby atf_add_test_case basic 73*7affbeeaSRyan Libby} 74