[PATCH v4 5/8] t/zbd: add -m option to enable write_zone_remainder option
Shin'ichiro Kawasaki <[email protected]> Tue, 3 Mar 2026 10:31:56 +0900
| Newsgroups | org.kernel.vger.fio |
|---|---|
| Message-ID | <[email protected]> |
The previous commit introduced the option write_zone_remainder. To confirm the option works as expected, introduce the new option -m to the test scripts test-zbd-support and run-tests-against-nullb. Signed-off-by: Shin'ichiro Kawasaki <[email protected]> --- t/zbd/run-tests-against-nullb | 6 ++++++ t/zbd/test-zbd-support | 30 ++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/t/zbd/run-tests-against-nullb b/t/zbd/run-tests-against-nullb index f1cba355..628e41a3 100755 --- a/t/zbd/run-tests-against-nullb +++ b/t/zbd/run-tests-against-nullb @@ -23,6 +23,7 @@ usage() echo -e "\t-o <max_open_zones> Specify MaxOpen value, (${set_max_open} by default)." echo -e "\t-n <#number of runs> Set the number of times to run the entire suite " echo -e "\t or an individual section/test." + echo -e "\t-m Pass -m option to test-zbd-support to enable write_zone_remainder." echo -e "\t-q Quit t/zbd/test-zbd-support run after any failed test." echo -e "\t-r Remove the /dev/nullb0 device that may still exist after" echo -e "\t running this script." @@ -426,6 +427,7 @@ dev_size=1024 dev_blocksize=4096 set_max_open=8 set_extra_max_active=2 +write_zone_remainder=0 zbd_test_opts=() num_of_runs=1 test_case=0 @@ -438,6 +440,7 @@ while (($#)); do -L) list_only=1; shift;; -r) cleanup_nullb; exit 0;; -n) num_of_runs="${2}"; shift; shift;; + -m) write_zone_remainder=1; shift;; -t) test_case="${2}"; shift; shift;; -q) quit_on_err=1; shift;; -h) usage; break;; @@ -491,6 +494,9 @@ while ((run_nr <= $num_of_runs)); do if ((quit_on_err)); then zbd_test_opts+=("-q") fi + if ((write_zone_remainder)); then + zbd_test_opts+=("-m") + fi section$section_number configure_nullb rc=$? diff --git a/t/zbd/test-zbd-support b/t/zbd/test-zbd-support index 40f1de90..01fb4dd3 100755 --- a/t/zbd/test-zbd-support +++ b/t/zbd/test-zbd-support @@ -13,6 +13,7 @@ usage() { echo -e "\t-l Test with libzbc ioengine" echo -e "\t-r Reset all zones before test start" echo -e "\t-w Reset all zones before executing each write test case" + echo -e "\t-m Write zone remainder instead of zone finish operation" echo -e "\t-o <max_open_zones> Run fio with max_open_zones limit" echo -e "\t-t <test #> Run only a single test case with specified number" echo -e "\t-s <test #> Start testing from the case with the specified number" @@ -202,6 +203,30 @@ has_max_open_zones() { return 1 } +has_zone_writes() { + local has_zonemode_zbd=0 + local has_write=0 + local word + + while (($# > 1)); do + if [[ ${1} =~ "--zonemode=zbd" ]]; then + has_zonemode_zbd=1 + fi + if [[ ${1} =~ "--rw=" ]]; then + word=${1} + word=${word/--rw=/} + if [[ $word =~ w ]]; then + has_write=1 + fi + fi + shift + done + if ((has_zonemode_zbd && has_write)); then + return 0 + fi + return 1 +} + run_fio() { local fio opts @@ -215,6 +240,9 @@ run_fio() { if [[ -n ${max_open_zones_opt} ]] && ! has_max_open_zones "${opts[@]}"; then opts+=("--max_open_zones=${max_open_zones_opt}") fi + if [[ -n ${write_zone_remainder} ]] && has_zone_writes "${opts[@]}"; then + opts+=("--write_zone_remainder=1") + fi { echo; echo "fio ${opts[*]}"; echo; } >>"${logfile}.${test_number}" "${dynamic_analyzer[@]}" "$fio" "${opts[@]}" @@ -1877,6 +1905,7 @@ reset_all_zones= reset_before_write= use_libzbc= zbd_debug= +write_zone_remainder= max_open_zones_opt= quit_on_err= force_io_uring= @@ -1892,6 +1921,7 @@ while [ "${1#-}" != "$1" ]; do -l) use_libzbc=1; shift;; -r) reset_all_zones=1; shift;; -w) reset_before_write=1; shift;; + -m) write_zone_remainder=1; shift;; -t) tests+=("$2"); shift; shift;; -o) max_open_zones_opt="${2}"; shift; shift;; -s) start_test=$2; shift; shift;; -- 2.49.0