Re: [PATCH v3 2/5] blk-mq: Restart a single queue if tag sets are shared

Jens Axboe
2017-04-06T19:12:45Z

On 04/06/2017 12:10 PM, Bart Van Assche wrote:
> + for (i = 0; i < queue->nr_hw_queues; i++) {
> + j = (i + hctx->queue_num + 1) % queue->nr_hw_queues;
> + h = queue->queue_hw_ctx[j];
> + if (h->tags == tags && blk_mq_sched_restart_hctx(h))
> + break;

I'm pretty sure that doing:

j = i + hctx->queue_num + 1;;
for (i = 0; i < queue->nr_hw_queues; i++, j++) {
if (j == queue->nr_hw_queues)
j = 0;
h = queue->queue_hw_ctx[j];
if (h->tags == tags && blk_mq_sched_restart_hctx(h))
break;
}

would be considerably more efficient than a modulo for each loop. And
let's rename 'h' to 'hctx', readability is much better that way.
Especially since you have both i and j as iterators.

--
Jens Axboe