mirror of https://github.com/xemu-project/xemu.git
106 lines
2.6 KiB
Bash
Executable File
106 lines
2.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
#
|
|
# Test zone management operations.
|
|
#
|
|
|
|
seq="$(basename $0)"
|
|
echo "QA output created by $seq"
|
|
status=1 # failure is the default!
|
|
|
|
_cleanup()
|
|
{
|
|
_cleanup_test_img
|
|
sudo -n rmmod null_blk
|
|
}
|
|
trap "_cleanup; exit \$status" 0 1 2 3 15
|
|
|
|
# get standard environment, filters and checks
|
|
. ../common.rc
|
|
. ../common.filter
|
|
. ../common.qemu
|
|
|
|
# This test only runs on Linux hosts with raw image files.
|
|
_supported_fmt raw
|
|
_supported_proto file
|
|
_supported_os Linux
|
|
|
|
sudo -n true || \
|
|
_notrun 'Password-less sudo required'
|
|
|
|
IMG="--image-opts -n driver=host_device,filename=/dev/nullb0"
|
|
QEMU_IO_OPTIONS=$QEMU_IO_OPTIONS_NO_FMT
|
|
|
|
echo "Testing a null_blk device:"
|
|
echo "case 1: if the operations work"
|
|
sudo -n modprobe null_blk nr_devices=1 zoned=1
|
|
sudo -n chmod 0666 /dev/nullb0
|
|
|
|
echo "(1) report the first zone:"
|
|
$QEMU_IO $IMG -c "zrp 0 1"
|
|
echo
|
|
echo "report the first 10 zones"
|
|
$QEMU_IO $IMG -c "zrp 0 10"
|
|
echo
|
|
echo "report the last zone:"
|
|
$QEMU_IO $IMG -c "zrp 0x3e70000000 2" # 0x3e70000000 / 512 = 0x1f380000
|
|
echo
|
|
echo
|
|
echo "(2) opening the first zone"
|
|
$QEMU_IO $IMG -c "zo 0 268435456" # 268435456 / 512 = 524288
|
|
echo "report after:"
|
|
$QEMU_IO $IMG -c "zrp 0 1"
|
|
echo
|
|
echo "opening the second zone"
|
|
$QEMU_IO $IMG -c "zo 268435456 268435456" #
|
|
echo "report after:"
|
|
$QEMU_IO $IMG -c "zrp 268435456 1"
|
|
echo
|
|
echo "opening the last zone"
|
|
$QEMU_IO $IMG -c "zo 0x3e70000000 268435456"
|
|
echo "report after:"
|
|
$QEMU_IO $IMG -c "zrp 0x3e70000000 2"
|
|
echo
|
|
echo
|
|
echo "(3) closing the first zone"
|
|
$QEMU_IO $IMG -c "zc 0 268435456"
|
|
echo "report after:"
|
|
$QEMU_IO $IMG -c "zrp 0 1"
|
|
echo
|
|
echo "closing the last zone"
|
|
$QEMU_IO $IMG -c "zc 0x3e70000000 268435456"
|
|
echo "report after:"
|
|
$QEMU_IO $IMG -c "zrp 0x3e70000000 2"
|
|
echo
|
|
echo
|
|
echo "(4) finishing the second zone"
|
|
$QEMU_IO $IMG -c "zf 268435456 268435456"
|
|
echo "After finishing a zone:"
|
|
$QEMU_IO $IMG -c "zrp 268435456 1"
|
|
echo
|
|
echo
|
|
echo "(5) resetting the second zone"
|
|
$QEMU_IO $IMG -c "zrs 268435456 268435456"
|
|
echo "After resetting a zone:"
|
|
$QEMU_IO $IMG -c "zrp 268435456 1"
|
|
echo
|
|
echo
|
|
echo "(6) append write" # the physical block size of the device is 4096
|
|
$QEMU_IO $IMG -c "zrp 0 1"
|
|
$QEMU_IO $IMG -c "zap -p 0 0x1000 0x2000"
|
|
echo "After appending the first zone firstly:"
|
|
$QEMU_IO $IMG -c "zrp 0 1"
|
|
$QEMU_IO $IMG -c "zap -p 0 0x1000 0x2000"
|
|
echo "After appending the first zone secondly:"
|
|
$QEMU_IO $IMG -c "zrp 0 1"
|
|
$QEMU_IO $IMG -c "zap -p 268435456 0x1000 0x2000"
|
|
echo "After appending the second zone firstly:"
|
|
$QEMU_IO $IMG -c "zrp 268435456 1"
|
|
$QEMU_IO $IMG -c "zap -p 268435456 0x1000 0x2000"
|
|
echo "After appending the second zone secondly:"
|
|
$QEMU_IO $IMG -c "zrp 268435456 1"
|
|
|
|
# success, all done
|
|
echo "*** done"
|
|
rm -f $seq.full
|
|
status=0
|