summaryrefslogtreecommitdiff
path: root/block
diff options
context:
space:
mode:
authorJens Axboe <axboe@fb.com>2016-11-21 15:08:46 -0700
committerJens Axboe <axboe@fb.com>2016-11-21 15:08:46 -0700
commite4a60d6676b6d9573d4ad29dc0cf4026c3e479f1 (patch)
tree04ea7bdc603a6237d2cab6dee869b70bb026d6a1 /block
parent03c340e27980ff5db8af73550c3721dbd2785dc5 (diff)
parent778889d8412e36e666b1e4ce108373613c84b428 (diff)
downloadlinux-next-e4a60d6676b6d9573d4ad29dc0cf4026c3e479f1.tar.gz
Merge branch 'for-4.10/block' into for-next
Diffstat (limited to 'block')
-rw-r--r--block/blk-core.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/block/blk-core.c b/block/blk-core.c
index 473dd698effd..6c4a425690fc 100644
--- a/block/blk-core.c
+++ b/block/blk-core.c
@@ -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;