The following changes since commit 187103ae7c28701d73725200a73dbb39eef72221: Merge branch 'pre_success' of https://github.com/kawasaki/fio (2025-01-21 11:38:18 -0500) are available in the Git repository at: git://git.kernel.dk/fio.git master for you to fetch changes up to 0f754a3af30fe6f308ce1c0f95bf1a6f99b3177a: t/zbd: add test case to confirm no max_open_zones limit check (2025-01-22 11:08:37 -0500) ---------------------------------------------------------------- Shin'ichiro Kawasaki (2): zbd: do not check open zones status and limits when jobs do not write t/zbd: add test case to confirm no max_open_zones limit check t/zbd/test-zbd-support | 29 +++++++++++++++++++++++++++++ zbd.c | 10 ++++++++++ 2 files changed, 39 insertions(+) --- Diff of recent changes: diff --git a/t/zbd/test-zbd-support b/t/zbd/test-zbd-support index e0b2a755..468fce70 100755 --- a/t/zbd/test-zbd-support +++ b/t/zbd/test-zbd-support @@ -1608,6 +1608,35 @@ test69() { >> "${logfile}.${test_number}" 2>&1 || return $? } +# Test max_open_zones and job_max_open_zones do not error out for non-write jobs +test70() { + require_zbd || return "$SKIP_TESTCASE" + + reset_zone "${dev}" -1 + + # Write data to two zones and make them open + run_fio_on_seq "$(ioengine "psync")" --io_size="$min_seq_write_size" \ + --rw=write --offset_increment=1z --numjobs=2 \ + --group_reporting=1 >> "${logfile}.${test_number}" 2>&1 + + # Confirm max_open_zones=1 for read workload does not fail + run_fio_on_seq "$(ioengine "psync")" --io_size="$min_seq_write_size" \ + --rw=read --max_open_zones=1 \ + >> "${logfile}.${test_number}" 2>&1 || return $? + + # Confirm job_max_open_zones=1 for read workload does not fail + run_fio_on_seq "$(ioengine "psync")" --io_size="$min_seq_write_size" \ + --rw=read --job_max_open_zones=1 \ + >> "${logfile}.${test_number}" 2>&1 + grep -q 'valid only for write jobs' \ + "${logfile}.${test_number}" || return $? + + # Confirm max_open_zones=1 for trim workload does not fail + run_fio_on_seq "$(ioengine "psync")" --rw=trim --io_size=1z \ + --bs="$zone_size" --max_open_zones=1 \ + >> "${logfile}.${test_number}" 2>&1 +} + SECONDS=0 tests=() dynamic_analyzer=() diff --git a/zbd.c b/zbd.c index 8a092cbe..ee095b1d 100644 --- a/zbd.c +++ b/zbd.c @@ -1264,6 +1264,16 @@ int zbd_setup_files(struct thread_data *td) return 1; } + /* + * If this job does not do write operations, skip open zone + * condition check. + */ + if (!td_write(td)) { + if (td->o.job_max_open_zones) + log_info("'job_max_open_zones' is valid only for write jobs\n"); + continue; + } + /* * The per job max open zones limit cannot be used without a * global max open zones limit. (As the tracking of open zones