block: mark zone-mgmt bios with REQ_SYNC
authorChaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
Tue, 7 Jan 2020 21:58:17 +0000 (13:58 -0800)
committerJens Axboe <axboe@kernel.dk>
Thu, 9 Jan 2020 14:59:12 +0000 (07:59 -0700)
In the current implementation, final zone-mgmt request is issued with
submit_bio_wait() which marks the bio REQ_SYNC. This is needed since
immediate action is expected for zone-mgmt requests as these are
blocking operations. This also bypasses the scheduler in the
blk_mq_make_request() and dispatches the request directly into the
hw ctx.

This patch marks all the chained bios REQ_SYNC so that we can have
above-mentioned behavior for non-final bios also.

Reviewed-by: Damien Le Moal <damien.lemoal@wdc.com>
Reviewed-by: Bob Liu <bob.liu@oracle.com>
Signed-off-by: Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/blk-zoned.c

index d00fcfd..05741c6 100644 (file)
@@ -198,7 +198,7 @@ int blkdev_zone_mgmt(struct block_device *bdev, enum req_opf op,
                        break;
                }
 
-               bio->bi_opf = op;
+               bio->bi_opf = op | REQ_SYNC;
                bio->bi_iter.bi_sector = sector;
                sector += zone_sectors;