From: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
To: fio@vger.kernel.org, Jens Axboe <axboe@kernel.dk>
Cc: Damien Le Moal <Damien.LeMoal@wdc.com>,
Dmitry Fomichev <Dmitry.Fomichev@wdc.com>,
Shinichiro Kawasaki <shinichiro.kawasaki@wdc.com>
Subject: [PATCH v3 6/7] t/zbd: Reset all zones before test when max open zones is specified
Date: Tue, 1 Sep 2020 17:20:05 +0900 [thread overview]
Message-ID: <20200901082006.1476720-7-shinichiro.kawasaki@wdc.com> (raw)
In-Reply-To: <20200901082006.1476720-1-shinichiro.kawasaki@wdc.com>
When the test target device has maximum open zones limit, the zones in
test target region may not be opened up to the limit, because the zones
out of the test target region may have open zones. To ensure that the
test target zones can be opened up to the limit, reset all zones of the
test target device before the test cases with write work load starts.
Introduce the helper function prep_write() to check if all zone reset is
required and do the reset.
Also remove unnecessary reset_zone calls for test case #29 and #48. These
are no longer required by virtue of the improvement in zbd_setup_files()
to set up zones to meet max_open_zones limit.
Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
Reviewed-by: Dmitry Fomichev <dmitry.fomichev@wdc.com>
---
t/zbd/test-zbd-support | 42 ++++++++++++++++++++++++++++++++++++++++--
1 file changed, 40 insertions(+), 2 deletions(-)
diff --git a/t/zbd/test-zbd-support b/t/zbd/test-zbd-support
index c21d6aad..248423bb 100755
--- a/t/zbd/test-zbd-support
+++ b/t/zbd/test-zbd-support
@@ -181,6 +181,15 @@ run_fio_on_seq() {
run_one_fio_job "${opts[@]}" "$@"
}
+# Prepare for write test by resetting zones. When max_open_zones option is
+# specified, reset all zones of the test target to ensure that zones out of the
+# test target range do not have open zones. This allows the write test to the
+# target range to be able to open zones up to max_open_zones.
+prep_write() {
+ [[ -n "${max_open_zones_opt}" && -n "${is_zbd}" ]] &&
+ reset_zone "${dev}" -1
+}
+
# Check whether buffered writes are refused.
test1() {
run_fio --name=job1 --filename="$dev" --rw=write --direct=0 --bs=4K \
@@ -252,6 +261,7 @@ test4() {
test5() {
local size off capacity
+ prep_write
off=$((first_sequential_zone_sector * 512))
capacity=$(total_zone_capacity 4 $off $dev)
size=$((4 * zone_size))
@@ -267,6 +277,7 @@ test5() {
test6() {
local size off capacity
+ prep_write
off=$((first_sequential_zone_sector * 512))
capacity=$(total_zone_capacity 4 $off $dev)
size=$((4 * zone_size))
@@ -285,6 +296,7 @@ test7() {
local size=$((zone_size))
local off capacity
+ prep_write
off=$((first_sequential_zone_sector * 512))
capacity=$(total_zone_capacity 1 $off $dev)
run_fio_on_seq "$(ioengine "libaio")" --iodepth=1 --rw=randwrite \
@@ -299,6 +311,7 @@ test7() {
test8() {
local size off capacity
+ prep_write
size=$((4 * zone_size))
off=$((first_sequential_zone_sector * 512))
capacity=$(total_zone_capacity 4 $off $dev)
@@ -319,6 +332,7 @@ test9() {
return 0
fi
+ prep_write
size=$((4 * zone_size))
run_fio_on_seq --ioengine=sg \
--iodepth=1 --rw=randwrite --bs=16K \
@@ -337,6 +351,7 @@ test10() {
return 0
fi
+ prep_write
size=$((4 * zone_size))
run_fio_on_seq --ioengine=sg \
--iodepth=64 --rw=randwrite --bs=16K \
@@ -350,6 +365,7 @@ test10() {
test11() {
local size off capacity
+ prep_write
size=$((4 * zone_size))
off=$((first_sequential_zone_sector * 512))
capacity=$(total_zone_capacity 4 $off $dev)
@@ -364,6 +380,7 @@ test11() {
test12() {
local size off capacity
+ prep_write
size=$((8 * zone_size))
off=$((first_sequential_zone_sector * 512))
capacity=$(total_zone_capacity 8 $off $dev)
@@ -378,6 +395,7 @@ test12() {
test13() {
local size off capacity
+ prep_write
size=$((8 * zone_size))
off=$((first_sequential_zone_sector * 512))
capacity=$(total_zone_capacity 8 $off $dev)
@@ -393,6 +411,7 @@ test13() {
test14() {
local size
+ prep_write
size=$((16 * 2**20)) # 20 MB
if [ $size -gt $((first_sequential_zone_sector * 512)) ]; then
echo "$dev does not have enough sequential zones" \
@@ -417,6 +436,7 @@ test15() {
reset_zone "$dev" $((first_sequential_zone_sector +
i*sectors_per_zone))
done
+ prep_write
w_off=$(((first_sequential_zone_sector + 2 * sectors_per_zone) * 512))
w_size=$((2 * zone_size))
w_capacity=$(total_zone_capacity 2 $w_off $dev)
@@ -441,6 +461,7 @@ test16() {
reset_zone "$dev" $((first_sequential_zone_sector +
i*sectors_per_zone))
done
+ prep_write
w_off=$(((first_sequential_zone_sector + 2 * sectors_per_zone) * 512))
w_size=$((2 * zone_size))
w_capacity=$(total_zone_capacity 2 $w_off $dev)
@@ -463,6 +484,7 @@ test17() {
if [ -n "$is_zbd" ]; then
reset_zone "$dev" $((off / 512)) || return $?
fi
+ prep_write
run_one_fio_job "$(ioengine "libaio")" --iodepth=8 --rw=randrw --bs=4K \
--zonemode=zbd --zonesize="${zone_size}" \
--offset=$off --loops=2 --norandommap=1\
@@ -516,6 +538,7 @@ test24() {
local bs loops=9 size=$((zone_size))
local off capacity
+ prep_write
off=$((first_sequential_zone_sector * 512))
capacity=$(total_zone_capacity 1 $off $dev)
@@ -538,6 +561,7 @@ test25() {
[ -n "$is_zbd" ] &&
reset_zone "$dev" $((first_sequential_zone_sector + i*sectors_per_zone))
done
+ prep_write
for ((i=0;i<16;i++)); do
opts+=("--name=job$i" "--filename=$dev" "--thread=1" "--direct=1")
opts+=("--offset=$((first_sequential_zone_sector*512 + zone_size*i))")
@@ -552,6 +576,7 @@ write_to_first_seq_zone() {
local loops=4 r
local off capacity
+ prep_write
off=$((first_sequential_zone_sector * 512))
capacity=$(total_zone_capacity 1 $off $dev)
@@ -581,6 +606,7 @@ test28() {
off=$((first_sequential_zone_sector * 512 + 64 * zone_size))
[ -n "$is_zbd" ] && reset_zone "$dev" $((off / 512))
+ prep_write
opts=("--debug=zbd")
capacity=$(total_zone_capacity 1 $off $dev)
for ((i=0;i<jobs;i++)); do
@@ -604,7 +630,7 @@ test29() {
off=$((first_sequential_zone_sector * 512 + 64 * zone_size))
size=$((16*zone_size))
- [ -n "$is_zbd" ] && reset_zone "$dev" $((off / 512))
+ prep_write
opts=("--debug=zbd")
for ((i=0;i<jobs;i++)); do
opts+=("--name=job$i" "--filename=$dev" "--offset=$off" "--bs=16K")
@@ -623,6 +649,7 @@ test29() {
test30() {
local off
+ prep_write
off=$((first_sequential_zone_sector * 512))
run_one_fio_job "$(ioengine "libaio")" --iodepth=8 --rw=randrw \
--bs="$(max $((zone_size / 128)) "$logical_block_size")"\
@@ -636,6 +663,7 @@ test30() {
test31() {
local bs inc nz off opts size
+ prep_write
# Start with writing 128 KB to 128 sequential zones.
bs=128K
nz=128
@@ -668,6 +696,7 @@ test31() {
test32() {
local off opts=() size
+ prep_write
off=$((first_sequential_zone_sector * 512))
size=$((disk_size - off))
opts+=("--name=$dev" "--filename=$dev" "--offset=$off" "--size=$size")
@@ -684,6 +713,7 @@ test33() {
local bs io_size size
local off capacity=0;
+ prep_write
off=$((first_sequential_zone_sector * 512))
capacity=$(total_zone_capacity 1 $off $dev)
size=$((2 * zone_size))
@@ -700,6 +730,7 @@ test33() {
test34() {
local size
+ prep_write
size=$((2 * zone_size))
run_fio_on_seq "$(ioengine "psync")" --iodepth=1 --rw=write --size=$size \
--do_verify=1 --verify=md5 --bs=$((3 * zone_size / 4)) \
@@ -711,6 +742,7 @@ test34() {
test35() {
local bs off io_size size
+ prep_write
off=$(((first_sequential_zone_sector + 1) * 512))
size=$((zone_size - 2 * 512))
bs=$((zone_size / 4))
@@ -725,6 +757,7 @@ test35() {
test36() {
local bs off io_size size
+ prep_write
off=$(((first_sequential_zone_sector) * 512))
size=$((zone_size - 512))
bs=$((zone_size / 4))
@@ -739,6 +772,7 @@ test36() {
test37() {
local bs off size capacity
+ prep_write
capacity=$(total_zone_capacity 1 $first_sequential_zone_sector $dev)
if [ "$first_sequential_zone_sector" = 0 ]; then
off=0
@@ -758,6 +792,7 @@ test37() {
test38() {
local bs off size
+ prep_write
size=$((logical_block_size))
off=$((disk_size - logical_block_size))
bs=$((logical_block_size))
@@ -828,6 +863,7 @@ test45() {
local bs i
[ -z "$is_zbd" ] && return 0
+ prep_write
bs=$((logical_block_size))
run_one_fio_job "$(ioengine "psync")" --iodepth=1 --rw=randwrite --bs=$bs\
--offset=$((first_sequential_zone_sector * 512)) \
@@ -840,6 +876,7 @@ test45() {
test46() {
local size
+ prep_write
size=$((4 * zone_size))
run_fio_on_seq "$(ioengine "libaio")" --iodepth=64 --rw=randwrite --bs=4K \
--group_reporting=1 --numjobs=8 \
@@ -851,6 +888,7 @@ test46() {
test47() {
local bs
+ prep_write
bs=$((logical_block_size))
run_fio_on_seq "$(ioengine "psync")" --rw=write --bs=$bs --zoneskip=1 \
>> "${logfile}.${test_number}" 2>&1 && return 1
@@ -865,7 +903,7 @@ test48() {
off=$((first_sequential_zone_sector * 512 + 64 * zone_size))
size=$((16*zone_size))
- [ -n "$is_zbd" ] && reset_zone "$dev" $((off / 512))
+ prep_write
opts=("--aux-path=/tmp" "--allow_file_create=0" "--significant_figures=10")
opts+=("--debug=zbd")
opts+=("$(ioengine "libaio")" "--rw=randwrite" "--direct=1")
--
2.26.2
next prev parent reply other threads:[~2020-09-01 8:20 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-09-01 8:19 [PATCH v3 0/7] Improve open zones accounting Shin'ichiro Kawasaki
2020-09-01 8:20 ` [PATCH v3 1/7] zbd: Decrement open zones count at write command completion Shin'ichiro Kawasaki
2020-09-01 8:20 ` [PATCH v3 2/7] oslib/linux-blkzoned: Allow reset zone before file set up Shin'ichiro Kawasaki
2020-09-01 8:20 ` [PATCH v3 3/7] zbd: Initialize open zones list referring zone status at fio start Shin'ichiro Kawasaki
2020-09-01 8:20 ` [PATCH v3 4/7] t/zbd: Improve usage message of test-zbd-support script Shin'ichiro Kawasaki
2020-09-01 8:20 ` [PATCH v3 5/7] t/zbd: Add -o option to t/zbd/test-zoned-support Shin'ichiro Kawasaki
2020-09-01 8:20 ` Shin'ichiro Kawasaki [this message]
2020-09-01 8:20 ` [PATCH v3 7/7] t/zbd: Remove unnecessary option for zbc_reset_zone Shin'ichiro Kawasaki
2020-09-01 14:38 ` [PATCH v3 0/7] Improve open zones accounting Jens Axboe
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200901082006.1476720-7-shinichiro.kawasaki@wdc.com \
--to=shinichiro.kawasaki@wdc.com \
--cc=Damien.LeMoal@wdc.com \
--cc=Dmitry.Fomichev@wdc.com \
--cc=axboe@kernel.dk \
--cc=fio@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.