blk-mq: Explain when 'active_queues' is decremented
authorBart Van Assche <bart.vanassche@wdc.com>
Wed, 10 Jan 2018 16:33:33 +0000 (08:33 -0800)
committerJens Axboe <axboe@kernel.dk>
Wed, 10 Jan 2018 16:45:29 +0000 (09:45 -0700)
It is nontrivial to derive from the blk-mq source code when
blk_mq_tags.active_queues is decremented. Hence add a comment that
explains this.

Signed-off-by: Bart Van Assche <bart.vanassche@wdc.com>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Hannes Reinecke <hare@suse.de>
Cc: Johannes Thumshirn <jthumshirn@suse.de>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/blk-mq.c

index 9aa24c9..266fc4f 100644 (file)
@@ -954,6 +954,12 @@ static void blk_mq_timeout_work(struct work_struct *work)
                data.next = blk_rq_timeout(round_jiffies_up(data.next));
                mod_timer(&q->timeout, data.next);
        } else {
+               /*
+                * Request timeouts are handled as a forward rolling timer. If
+                * we end up here it means that no requests are pending and
+                * also that no request has been pending for a while. Mark
+                * each hctx as idle.
+                */
                queue_for_each_hw_ctx(q, hctx, i) {
                        /* the hctx may be unmapped, so check it here */
                        if (blk_mq_hw_queue_mapped(hctx))