Commit cf28f6f9 authored by Damien Le Moal's avatar Damien Le Moal Committed by Jens Axboe
Browse files

zloop: fail zone append operations that are targeting full zones



zloop_rw() will fail any regular write operation that targets a full
sequential zone. The check for this is indirect and achieved by checking
the write pointer alignment of the write operation. But this check is
ineffective for zone append operations since these are alwasy
automatically directed at a zone write pointer.

Prevent zone append operations from being executed in a full zone with
an explicit check of the zone condition.

Fixes: eb0570c7 ("block: new zoned loop block device driver")
Cc: stable@vger.kernel.org
Signed-off-by: default avatarDamien Le Moal <dlemoal@kernel.org>
Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent 866d6574
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -407,6 +407,10 @@ static void zloop_rw(struct zloop_cmd *cmd)
		mutex_lock(&zone->lock);

		if (is_append) {
			if (zone->cond == BLK_ZONE_COND_FULL) {
				ret = -EIO;
				goto unlock;
			}
			sector = zone->wp;
			cmd->sector = sector;
		}