On Wed, Jun 07, 2023 at 05:32:26PM +0900, Shin'ichiro Kawasaki wrote: > For zonemode=zbd, fio checks condition of each zone and account it as > write target zone if it has open condition. However, when such a zone in > open condition is almost full and its remainder area for write is > smaller than the block size, fio does not handle it as a write target > zone. This causes difference between open zones accounting on the device > and write target zones accounting by fio. It results in unexpected > max_open_zones limit failure. > > Avoid the zone accounting difference by handling the almost full zones > as write target zones at fio start. Introduce the helper function > __zbd_write_zone_get() which does same operation as zbd_write_zone_get() > except the check for the almost full zones. At fio start, call > __zbd_write_zone_get() so that almost full zones are added to write > target zones. During fio workload run, call zbd_write_zone_get() so that > the almost full zones are not chosen for write target. > > Suggested-by: Niklas Cassel <niklas.cassel@xxxxxxx> > Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@xxxxxxx> > --- Reviewed-by: Niklas Cassel <niklas.cassel@xxxxxxx>