]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
blk-mq: improve warning for running a queue on the wrong CPU
authorJens Axboe <axboe@fb.com>
Wed, 24 Aug 2016 21:38:01 +0000 (15:38 -0600)
committerChuck Anderson <chuck.anderson@oracle.com>
Wed, 19 Oct 2016 23:01:22 +0000 (16:01 -0700)
__blk_mq_run_hw_queue() currently warns if we are running the queue on a
CPU that isn't set in its mask. However, this can happen if a CPU is
being offlined, and the workqueue handling will place the work on CPU0
instead. Improve the warning so that it only triggers if the batch cpu
in the hardware queue is currently online.  If it triggers for that
case, then it's indicative of a flow problem in blk-mq, so we want to
retain it for that case.

Signed-off-by: Jens Axboe <axboe@fb.com>
(cherry picked from commit 0e87e58bf60edb6bb28e493c7a143f41b091a5e5)

Orabug: 24914952
Signed-off-by: Shan Hai <shan.hai@oracle.com>
Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
block/blk-mq.c

index 6c50a5eb717ba43a096863a0b4606730bddaf37b..6acfac2b495c506df00775ccbdb4dfeb05d30e45 100644 (file)
@@ -758,11 +758,12 @@ static void __blk_mq_run_hw_queue(struct blk_mq_hw_ctx *hctx)
        struct list_head *dptr;
        int queued;
 
-       WARN_ON(!cpumask_test_cpu(raw_smp_processor_id(), hctx->cpumask));
-
        if (unlikely(test_bit(BLK_MQ_S_STOPPED, &hctx->state)))
                return;
 
+       WARN_ON(!cpumask_test_cpu(raw_smp_processor_id(), hctx->cpumask) &&
+               cpu_online(hctx->next_cpu));
+
        hctx->run++;
 
        /*