From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Shin'ichiro Kawasaki Subject: [PATCH v2 5/5] t/zbd: Add test #58 to test zone reset by trim workload Date: Thu, 5 Aug 2021 12:28:35 +0900 Message-Id: <20210805032835.1119908-6-shinichiro.kawasaki@wdc.com> In-Reply-To: <20210805032835.1119908-1-shinichiro.kawasaki@wdc.com> References: <20210805032835.1119908-1-shinichiro.kawasaki@wdc.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit To: fio@vger.kernel.org, Jens Axboe Cc: Damien Le Moal , Dmitry Fomichev , Niklas Cassel , Shinichiro Kawasaki List-ID: To exercise zone reset by trim workload, add the test case #58. As the precondition, it fills several zones. After that, a trim job and a write job run in parallel for 30 seconds. The ratio of trim commands and write commands is controlled by --flow option. Signed-off-by: Shin'ichiro Kawasaki Tested-by: Dmitry Fomichev Reviewed-by: Dmitry Fomichev --- t/zbd/test-zbd-support | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/t/zbd/test-zbd-support b/t/zbd/test-zbd-support index 57e6d05e..5103c406 100755 --- a/t/zbd/test-zbd-support +++ b/t/zbd/test-zbd-support @@ -1215,6 +1215,32 @@ test57() { >> "${logfile}.${test_number}" 2>&1 || return $? } +# Random writes and random trims to sequential write required zones for 30s. +test58() { + local off size bs + + require_seq_zones 128 || return $SKIP_TESTCASE + + size=$((zone_size * 128)) + bs="$(max $((zone_size / 128)) "$logical_block_size")" + prep_write + off=$((first_sequential_zone_sector * 512)) + run_fio --zonemode=zbd --direct=1 --zonesize="${zone_size}" --thread=1 \ + --filename="${dev}" --norandommap=1 \ + --name="precondition" --rw=write "$(ioengine "psync")" \ + --offset="${off}" --size=$((zone_size * 16)) --bs="${bs}" \ + "${job_var_opts[@]}" \ + --name=wjob --wait_for="precondition" --rw=randwrite \ + "$(ioengine "libaio")" --iodepth=8 \ + --offset="${off}" --size="${size}" --bs="${bs}" \ + --time_based --runtime=30s --flow=128 "${job_var_opts[@]}" \ + --name=trimjob --wait_for="precondition" --rw=randtrim \ + "$(ioengine "psync")" \ + --offset="${off}" --size="${size}" --bs="${zone_size}" \ + --time_based --runtime=30s --flow=1 "${job_var_opts[@]}" \ + >>"${logfile}.${test_number}" 2>&1 +} + SECONDS=0 tests=() dynamic_analyzer=() -- 2.31.1