xref: /qemu/tests/qemu-iotests/tests/zoned (revision 2bfb10df)
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