Skip to content

Commit

Permalink
block: apply blk_partition_remap to REQ_OP_ZONE_RESET
Browse files Browse the repository at this point in the history
If a ZBC device is partitioned and operations are performed on the partition
the zone information is rebased to the partition, however the zone reset
is not mapped from the partition to device as are other operations.

This causes the API (report zones / reset zone) to be unbalanced in this
regard. Checking for the zone reset op code explicitly will balance the
API.

Signed-off-by: Shaun Tancheff <shaun.tancheff@seagate.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
  • Loading branch information
Shaun Tancheff authored and Jens Axboe committed Nov 21, 2016
1 parent 93c5bdf commit 778889d
Showing 1 changed file with 6 additions and 1 deletion.
7 changes: 6 additions & 1 deletion block/blk-core.c
Original file line number Diff line number Diff line change
Expand Up @@ -1787,7 +1787,12 @@ static inline void blk_partition_remap(struct bio *bio)
{
struct block_device *bdev = bio->bi_bdev;

if (bio_sectors(bio) && bdev != bdev->bd_contains) {
/*
* Zone reset does not include bi_size so bio_sectors() is always 0.
* Include a test for the reset op code and perform the remap if needed.
*/
if (bdev != bdev->bd_contains &&
(bio_sectors(bio) || bio_op(bio) == REQ_OP_ZONE_RESET)) {
struct hd_struct *p = bdev->bd_part;

bio->bi_iter.bi_sector += p->start_sect;
Expand Down

0 comments on commit 778889d

Please sign in to comment.