diff options
author | huhai <huhai@kylinos.cn> | 2018-05-18 17:32:30 +0300 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2018-05-18 17:35:38 +0300 |
commit | d416c92c5d6229b33f37f0f75e52194081ccbcc4 (patch) | |
tree | dbc881f131ae6981d736023cf1ba9fc59e292ed5 /block/blk-mq.c | |
parent | 76aa1d341257c1beb6ecfdd67fecdaac7e2aee25 (diff) | |
download | linux-d416c92c5d6229b33f37f0f75e52194081ccbcc4.tar.xz |
blk-mq: clear hctx->dispatch_from when mappings change
When the number of hardware queues is changed, the drivers will call
blk_mq_update_nr_hw_queues() to remap hardware queues. This changes
the ctx mappings, but the current code doesn't clear the
->dispatch_from hint. This can result in dispatch_from pointing to
a ctx that isn't mapped to the hctx anymore.
Fixes: b347689ffbca ("blk-mq-sched: improve dispatching from sw queue")
Signed-off-by: huhai <huhai@kylinos.cn>
Reviewed-by: Ming Lei <ming.lei@redhat.com>
Moved the placement of the clearing to where we clear other items
pertaining to the existing mapping, added Fixes line, and reworded
the commit message.
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'block/blk-mq.c')
-rw-r--r-- | block/blk-mq.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/block/blk-mq.c b/block/blk-mq.c index 6c6aef44badd..4cbfd784e837 100644 --- a/block/blk-mq.c +++ b/block/blk-mq.c @@ -2358,6 +2358,7 @@ static void blk_mq_map_swqueue(struct request_queue *q) queue_for_each_hw_ctx(q, hctx, i) { cpumask_clear(hctx->cpumask); hctx->nr_ctx = 0; + hctx->dispatch_from = NULL; } /* |