From: Niklas Cassel <niklas.cassel@xxxxxxx> There is an upper limit that is checked for each td, and for each file, even though a file has a pointer to a zoned_block_device_info that has already been created. Multiple files, from the same or from another td can point to the same zoned_block_device_info. All zoned_block_device_info:s have already been created earlier in the call chain. Simplify this by only checking the upper limit on max open zones when a zoned_block_device_info is created. This way, max_open_zones is handled from a single location, instead of potentially being reassigned from a completely different location. Signed-off-by: Niklas Cassel <niklas.cassel@xxxxxxx> --- zbd.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/zbd.c b/zbd.c index eed796b3..8ed8f195 100644 --- a/zbd.c +++ b/zbd.c @@ -588,7 +588,8 @@ static int zbd_create_zone_info(struct thread_data *td, struct fio_file *f) if (ret == 0) { f->zbd_info->model = zbd_model; - f->zbd_info->max_open_zones = td->o.max_open_zones; + f->zbd_info->max_open_zones = + td->o.max_open_zones ?: ZBD_MAX_OPEN_ZONES; } return ret; } @@ -726,8 +727,6 @@ int zbd_setup_files(struct thread_data *td) if (zbd_is_seq_job(f)) assert(f->min_zone < f->max_zone); - zbd->max_open_zones = zbd->max_open_zones ?: ZBD_MAX_OPEN_ZONES; - if (td->o.max_open_zones > 0 && zbd->max_open_zones != td->o.max_open_zones) { log_err("Different 'max_open_zones' values\n"); -- 2.25.1