diff options
author | Dennis Zhou <dennis@kernel.org> | 2018-12-05 18:10:31 +0100 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2018-12-08 06:26:37 +0100 |
commit | 5cdf2e3fea5ee37b66842d76a9b06e6dac0b933d (patch) | |
tree | b460ef1ba02562982e2f000e704ce7214be4d5f3 /block/blk-iolatency.c | |
parent | dm: set the static flush bio device on demand (diff) | |
download | linux-5cdf2e3fea5ee37b66842d76a9b06e6dac0b933d.tar.xz linux-5cdf2e3fea5ee37b66842d76a9b06e6dac0b933d.zip |
blkcg: associate blkg when associating a device
Previously, blkg association was handled by controller specific code in
blk-throttle and blk-iolatency. However, because a blkg represents a
relationship between a blkcg and a request_queue, it makes sense to keep
the blkg->q and bio->bi_disk->queue consistent.
This patch moves association into the bio_set_dev macro(). This should
cover the majority of cases where the device is set/changed keeping the
two pointers consistent. Fallback code is added to
blkcg_bio_issue_check() to catch any missing paths.
Signed-off-by: Dennis Zhou <dennis@kernel.org>
Reviewed-by: Josef Bacik <josef@toxicpanda.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'block/blk-iolatency.c')
-rw-r--r-- | block/blk-iolatency.c | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/block/blk-iolatency.c b/block/blk-iolatency.c index cdbd10564e66..e6b47c255521 100644 --- a/block/blk-iolatency.c +++ b/block/blk-iolatency.c @@ -472,14 +472,12 @@ static void check_scale_change(struct iolatency_grp *iolat) static void blkcg_iolatency_throttle(struct rq_qos *rqos, struct bio *bio) { struct blk_iolatency *blkiolat = BLKIOLATENCY(rqos); - struct blkcg_gq *blkg; + struct blkcg_gq *blkg = bio->bi_blkg; bool issue_as_root = bio_issue_as_root_blkg(bio); if (!blk_iolatency_enabled(blkiolat)) return; - bio_associate_blkg(bio); - blkg = bio->bi_blkg; bio_issue_init(&bio->bi_issue, bio_sectors(bio)); while (blkg && blkg->parent) { |