Skip to content

Commit 90f05d4

Browse files
committed
zbd/012: Test higher queue depths
Instead of only testing queue depth 1, also test higher queue depths. Use libaio for higher queue depths since io_uring does not preserve the write order if qd >= 2 and a request queue is frozen. Signed-off-by: Bart Van Assche <[email protected]>
1 parent 9dffc45 commit 90f05d4

File tree

2 files changed

+50
-39
lines changed

2 files changed

+50
-39
lines changed

tests/zbd/012

Lines changed: 46 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -29,46 +29,53 @@ toggle_iosched() {
2929
test() {
3030
echo "Running ${TEST_NAME}"
3131

32-
# To do: make this test pass for qd > 1.
33-
local qd=1
34-
echo "$qd"
35-
local scsi_debug_params=(
36-
delay=0
37-
dev_size_mb=1024
38-
every_nth=$((2 * qd))
39-
max_queue="${qd}"
40-
opts=0x8000 # SDEBUG_OPT_HOST_BUSY
41-
sector_size=4096
42-
zbc=host-managed
43-
zone_nr_conv=0
44-
zone_size_mb=4
45-
)
46-
_init_scsi_debug "${scsi_debug_params[@]}" &&
47-
local zdev="/dev/${SCSI_DEBUG_DEVICES[0]}" fail &&
48-
ls -ld "${zdev}" >>"${FULL}" &&
49-
{ toggle_iosched & } &&
50-
toggle_iosched_pid=$! &&
51-
local fail &&
52-
local fio_args=(
53-
--direct=1
54-
--filename="${zdev}"
55-
--iodepth="${qd}"
56-
--ioengine=io_uring
57-
--ioscheduler=none
58-
--name="requeuing-and-queue-freezing-${qd}"
59-
--runtime="${TIMEOUT:-30}"
60-
--rw=randwrite
61-
--time_based
62-
--zonemode=zbd
32+
for qd in 1 2 4 8 16; do
33+
echo "$qd"
34+
local scsi_debug_params=(
35+
delay=0
36+
dev_size_mb=1024
37+
every_nth=$((2 * qd))
38+
max_queue="${qd}"
39+
opts=0x8000 # SDEBUG_OPT_HOST_BUSY
40+
sector_size=4096
41+
zbc=host-managed
42+
zone_nr_conv=0
43+
zone_size_mb=4
6344
)
64-
if ! fio "${fio_args[@]}" >>"${FULL}" 2>&1; then
65-
fail=true
66-
fi
67-
if [ -n "${toggle_iosched_pid}" ]; then
68-
kill "${toggle_iosched_pid}" >>"${FULL}" 2>&1
69-
fi
70-
_exit_scsi_debug >>"${FULL}" 2>&1
71-
45+
_init_scsi_debug "${scsi_debug_params[@]}" &&
46+
local zdev="/dev/${SCSI_DEBUG_DEVICES[0]}" fail &&
47+
ls -ld "${zdev}" >>"${FULL}" &&
48+
{ toggle_iosched & } &&
49+
toggle_iosched_pid=$! &&
50+
local fail &&
51+
local ioengine &&
52+
if [ $qd = 1 ]; then
53+
ioengine=io_uring
54+
else
55+
ioengine=libaio
56+
fi
57+
local fio_args=(
58+
--direct=1
59+
--filename="${zdev}"
60+
--iodepth="${qd}"
61+
--ioengine="${ioengine}"
62+
--ioscheduler=none
63+
--name="requeuing-and-queue-freezing-${qd}"
64+
--runtime=$((${TIMEOUT:-30}/5))
65+
--rw=randwrite
66+
--time_based
67+
--zonemode=zbd
68+
)
69+
if ! fio "${fio_args[@]}" >>"${FULL}" 2>&1; then
70+
fail=true
71+
fi
72+
if [ -n "${toggle_iosched_pid}" ]; then
73+
kill "${toggle_iosched_pid}" >>"${FULL}" 2>&1
74+
fi
75+
_exit_scsi_debug >>"${FULL}" 2>&1
76+
[ -z "$fail" ] || break
77+
done
78+
7279
if [ -z "$fail" ]; then
7380
echo "Test complete"
7481
else

tests/zbd/012.out

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
11
Running zbd/012
22
1
3+
2
4+
4
5+
8
6+
16
37
Test complete

0 commit comments

Comments
 (0)