Re: [PATCH] zloop: fix zone append check in zloop_rw()

Hans Holmberg
2025-11-19T09:02:26Z

On 19/11/2025 05:38, Damien Le Moal wrote:
> While commit cf28f6f923cb ("zloop: fail zone append operations that are
> targeting full zones") added a check in zloop_rw() that a zone append is
> not issued to a full zone, commit e3a96ca90462 ("zloop: simplify checks
> for writes to sequential zones") inadvertently removed the check to
> verify that there is enough unwritten space in a zone for an incoming
> zone append opration.
>
> Re-add this check in zloop_rw() to make sure we do not write beyond the
> end of a zone. Of note is that this same check is already present in the
> function zloop_set_zone_append_sector() when ordered zone append is in
> use.
>
> Reported-by: Hans Holmberg <Hans.Holmberg@wdc.com>
> Fixes: e3a96ca90462 ("zloop: simplify checks for writes to sequential zones")
> Signed-off-by: Damien Le Moal <dlemoal@kernel.org>
> ---
> drivers/block/zloop.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/block/zloop.c b/drivers/block/zloop.c
> index c4da3116f7a9..1273bbca7843 100644
> --- a/drivers/block/zloop.c
> +++ b/drivers/block/zloop.c
> @@ -448,7 +448,8 @@ static void zloop_rw(struct zloop_cmd *cmd)
> * and set the target sector in zloop_queue_rq().
> */
> if (!zlo->ordered_zone_append) {
> - if (zone->cond == BLK_ZONE_COND_FULL) {
> + if (zone->cond == BLK_ZONE_COND_FULL ||
> + zone->wp + nr_sectors > zone_end) {
> spin_unlock_irqrestore(&zone->wp_lock,
> flags);
> ret = -EIO;

Looks good,

Reviewed-by: Hans Holmberg <hans.holmberg@wdc.com>