block: Initialize bio priority earlier
authorJan Kara <jack@suse.cz>
Thu, 23 Jun 2022 07:48:33 +0000 (09:48 +0200)
committerJens Axboe <axboe@kernel.dk>
Mon, 27 Jun 2022 12:29:12 +0000 (06:29 -0600)
Bio's IO priority needs to be initialized before we try to merge the bio
with other bios. Otherwise we could merge bios which would otherwise
receive different IO priorities leading to possible QoS issues.

Reviewed-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
Tested-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
Signed-off-by: Jan Kara <jack@suse.cz>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/20220623074840.5960-8-jack@suse.cz
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/blk-mq.c

index 4c4944b..c0ec193 100644 (file)
@@ -2814,6 +2814,8 @@ void blk_mq_submit_bio(struct bio *bio)
        if (!bio_integrity_prep(bio))
                return;
 
+       bio_set_ioprio(bio);
+
        rq = blk_mq_get_cached_request(q, plug, &bio, nr_segs);
        if (!rq) {
                if (!bio)
@@ -2825,8 +2827,6 @@ void blk_mq_submit_bio(struct bio *bio)
 
        trace_block_getrq(bio);
 
-       bio_set_ioprio(bio);
-
        rq_qos_track(q, rq, bio);
 
        blk_mq_bio_to_request(rq, bio, nr_segs);