Re: [PATCH 3/4] zbd: finish zone when all random write target zones have small remainder

Damien Le Moal <[email protected]>
Newsgroups org.kernel.vger.fio
Organization Western Digital Research
Message-ID <[email protected]>
On 4/11/25 8:12 PM, Shin'ichiro Kawasaki wrote:
> When a random write target offset points to a zone that is not writable,
> zbd_convert_to_write_zone() attempts to convert the write offset to a
> different, writable zone. However, the conversion fails when all of the
> following conditions are met:
> 
> 1) the workload has the max_open_zones limit
> 2) every write target zones, up to the max_open_zones limit, has
>    remainder sectors smaller than the block size
> 3) the next random write request targets a zone not in the write target
>    zone list
> 
> In this case, zbd_convert_to_write_zone() can not open another zone
> without exceeding the max_open_zones constraint. Therefore, It does not
> convert the write to a different zone printing with the debug message
> "did not choose another write zone". This leads to an unexpected stop of
> the random write workload.
> 
> To prevent the unexpected write stop, finish one of the write target
> zones with small remainder sectors. Check if all write target zones have
> small remainder, and store the result in the new local boolean variable
> all_write_zones_have_small_remainder. When this condition is true,
> choose one of the write target zones and finish it. Then return the zone
> from zbd_convert_to_write_zone() enabling the write process to continue.
> 
> Signed-off-by: Shin'ichiro Kawasaki <[email protected]>

Looks good to me.

Reviewed-by: Damien Le Moal <[email protected]>

-- 
Damien Le Moal
Western Digital Research
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.