test_device() {
local -i zone_idx
local -i offset
+ local zbdmode=""
echo "Running ${TEST_NAME}"
- _get_sysfs_variable "${TEST_DEV}" || return $?
_get_blkzone_report "${TEST_DEV}" || return $?
zone_idx=$(_find_first_sequential_zone) || return $?
offset=$((ZONE_STARTS[zone_idx] * 512))
+ # If the test target zone has smaller zone capacity than zone size,
+ # enable zonemode=zbd to have fio handle the zone capacity limit.
+ if ((ZONE_CAPS[zone_idx] != ZONE_LENGTHS[zone_idx])); then
+ zbdmode="--zonemode=zbd"
+ fi
+
blkzone reset -o "${ZONE_STARTS[zone_idx]}" "${TEST_DEV}"
_test_dev_queue_set scheduler deadline
FIO_PERF_FIELDS=("write io" "write iops")
_fio_perf --filename="${TEST_DEV}" --name zbdwo --rw=write --direct=1 \
--ioengine=libaio --iodepth=128 --bs=256k \
- --offset="${offset}"
+ --offset="${offset}" ${zbdmode}
_put_blkzone_report
- _put_sysfs_variable
echo "Test complete"
}