blk-mq: don't allow queue entering for a dying queue
If the queue is going away, don't let new allocs or queueing happen on it. Go through the normal wait process, and exit with ENODEV in that case. Signed-off-by: Keith Busch <keith.busch@intel.com> Signed-off-by: Jens Axboe <axboe@fb.com>
This commit is contained in:
Родитель
a4391c6465
Коммит
3b632cf0ea
|
@ -82,8 +82,10 @@ static int blk_mq_queue_enter(struct request_queue *q)
|
|||
|
||||
__percpu_counter_add(&q->mq_usage_counter, 1, 1000000);
|
||||
smp_wmb();
|
||||
/* we have problems to freeze the queue if it's initializing */
|
||||
if (!blk_queue_bypass(q) || !blk_queue_init_done(q))
|
||||
|
||||
/* we have problems freezing the queue if it's initializing */
|
||||
if (!blk_queue_dying(q) &&
|
||||
(!blk_queue_bypass(q) || !blk_queue_init_done(q)))
|
||||
return 0;
|
||||
|
||||
__percpu_counter_add(&q->mq_usage_counter, -1, 1000000);
|
||||
|
|
Загрузка…
Ссылка в новой задаче