Skip to content

Commit 3846f8f

Browse files
damien-lemoalgregkh
authored andcommitted
zloop: make the write pointer of full zones invalid
commit 866d657 upstream. The write pointer of zones that are in the full condition is always invalid. Reflect that fact by setting the write pointer of full zones to ULLONG_MAX. Fixes: eb0570c ("block: new zoned loop block device driver") Cc: stable@vger.kernel.org Signed-off-by: Damien Le Moal <dlemoal@kernel.org> Signed-off-by: Jens Axboe <axboe@kernel.dk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1 parent 35eb1ec commit 3846f8f

1 file changed

Lines changed: 5 additions & 3 deletions

File tree

drivers/block/zloop.c

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ static int zloop_update_seq_zone(struct zloop_device *zlo, unsigned int zone_no)
177177
zone->wp = zone->start;
178178
} else if (file_sectors == zlo->zone_capacity) {
179179
zone->cond = BLK_ZONE_COND_FULL;
180-
zone->wp = zone->start + zlo->zone_size;
180+
zone->wp = ULLONG_MAX;
181181
} else {
182182
zone->cond = BLK_ZONE_COND_CLOSED;
183183
zone->wp = zone->start + file_sectors;
@@ -326,7 +326,7 @@ static int zloop_finish_zone(struct zloop_device *zlo, unsigned int zone_no)
326326
}
327327

328328
zone->cond = BLK_ZONE_COND_FULL;
329-
zone->wp = zone->start + zlo->zone_size;
329+
zone->wp = ULLONG_MAX;
330330
clear_bit(ZLOOP_ZONE_SEQ_ERROR, &zone->flags);
331331

332332
unlock:
@@ -437,8 +437,10 @@ static void zloop_rw(struct zloop_cmd *cmd)
437437
* copmpletes.
438438
*/
439439
zone->wp += nr_sectors;
440-
if (zone->wp == zone_end)
440+
if (zone->wp == zone_end) {
441441
zone->cond = BLK_ZONE_COND_FULL;
442+
zone->wp = ULLONG_MAX;
443+
}
442444
}
443445

444446
rq_for_each_bvec(tmp, rq, rq_iter)

0 commit comments

Comments
 (0)