1#!/usr/bin/env bash 2# 3# Test zone management operations. 4# 5 6seq="$(basename $0)" 7echo "QA output created by $seq" 8status=1 # failure is the default! 9 10_cleanup() 11{ 12 _cleanup_test_img 13 sudo -n rmmod null_blk 14} 15trap "_cleanup; exit \$status" 0 1 2 3 15 16 17# get standard environment, filters and checks 18. ../common.rc 19. ../common.filter 20. ../common.qemu 21 22# This test only runs on Linux hosts with raw image files. 23_supported_fmt raw 24_supported_proto file 25_supported_os Linux 26 27sudo -n true || \ 28 _notrun 'Password-less sudo required' 29 30IMG="--image-opts -n driver=host_device,filename=/dev/nullb0" 31QEMU_IO_OPTIONS=$QEMU_IO_OPTIONS_NO_FMT 32 33echo "Testing a null_blk device:" 34echo "case 1: if the operations work" 35sudo -n modprobe null_blk nr_devices=1 zoned=1 36sudo -n chmod 0666 /dev/nullb0 37 38echo "(1) report the first zone:" 39$QEMU_IO $IMG -c "zrp 0 1" 40echo 41echo "report the first 10 zones" 42$QEMU_IO $IMG -c "zrp 0 10" 43echo 44echo "report the last zone:" 45$QEMU_IO $IMG -c "zrp 0x3e70000000 2" # 0x3e70000000 / 512 = 0x1f380000 46echo 47echo 48echo "(2) opening the first zone" 49$QEMU_IO $IMG -c "zo 0 268435456" # 268435456 / 512 = 524288 50echo "report after:" 51$QEMU_IO $IMG -c "zrp 0 1" 52echo 53echo "opening the second zone" 54$QEMU_IO $IMG -c "zo 268435456 268435456" # 55echo "report after:" 56$QEMU_IO $IMG -c "zrp 268435456 1" 57echo 58echo "opening the last zone" 59$QEMU_IO $IMG -c "zo 0x3e70000000 268435456" 60echo "report after:" 61$QEMU_IO $IMG -c "zrp 0x3e70000000 2" 62echo 63echo 64echo "(3) closing the first zone" 65$QEMU_IO $IMG -c "zc 0 268435456" 66echo "report after:" 67$QEMU_IO $IMG -c "zrp 0 1" 68echo 69echo "closing the last zone" 70$QEMU_IO $IMG -c "zc 0x3e70000000 268435456" 71echo "report after:" 72$QEMU_IO $IMG -c "zrp 0x3e70000000 2" 73echo 74echo 75echo "(4) finishing the second zone" 76$QEMU_IO $IMG -c "zf 268435456 268435456" 77echo "After finishing a zone:" 78$QEMU_IO $IMG -c "zrp 268435456 1" 79echo 80echo 81echo "(5) resetting the second zone" 82$QEMU_IO $IMG -c "zrs 268435456 268435456" 83echo "After resetting a zone:" 84$QEMU_IO $IMG -c "zrp 268435456 1" 85echo 86echo 87echo "(6) append write" # the physical block size of the device is 4096 88$QEMU_IO $IMG -c "zrp 0 1" 89$QEMU_IO $IMG -c "zap -p 0 0x1000 0x2000" 90echo "After appending the first zone firstly:" 91$QEMU_IO $IMG -c "zrp 0 1" 92$QEMU_IO $IMG -c "zap -p 0 0x1000 0x2000" 93echo "After appending the first zone secondly:" 94$QEMU_IO $IMG -c "zrp 0 1" 95$QEMU_IO $IMG -c "zap -p 268435456 0x1000 0x2000" 96echo "After appending the second zone firstly:" 97$QEMU_IO $IMG -c "zrp 268435456 1" 98$QEMU_IO $IMG -c "zap -p 268435456 0x1000 0x2000" 99echo "After appending the second zone secondly:" 100$QEMU_IO $IMG -c "zrp 268435456 1" 101 102# success, all done 103echo "*** done" 104rm -f $seq.full 105status=0 106