Thread (48 messages) 48 messages, 6 authors, 2018-11-03

Re: [PATCH 05/16] blk-mq: allow software queue to map to multiple hardware queues

From: Jens Axboe <axboe@kernel.dk>
Date: 2018-10-31 14:19:16
Also in: linux-nvme, lkml

On 10/30/18 6:49 PM, Sagi Grimberg wrote:
quoted
@@ -2342,10 +2346,16 @@ static void blk_mq_map_swqueue(struct request_queue *q)
  
  		ctx = per_cpu_ptr(q->queue_ctx, i);
  		hctx = blk_mq_map_queue_type(q, 0, i);
-
+		hctx->type = 0;
  		cpumask_set_cpu(i, hctx->cpumask);
-		ctx->index_hw = hctx->nr_ctx;
+		ctx->index_hw[hctx->type] = hctx->nr_ctx;
  		hctx->ctxs[hctx->nr_ctx++] = ctx;
+
+		/*
+		 * If the nr_ctx type overflows, we have exceeded the
+		 * amount of sw queues we can support.
+		 */
+		BUG_ON(!hctx->nr_ctx);
Was this added because nr_ctx became short? What was the motivation
for that? save space? structure alignment?
Right, I made it smaller to not take up more space after this change.
And since it is now smaller, adding a check for wrap seemed like
a good idea.
Perhaps this should be mentioned in the change log (as it contradicts
that no functional changes exist in this patch). Or, if this can happen
even when 32bit nr_ctx, it should be a separate small patch?
Could happen for any type, but more likely now of course. I'll
mention this in the changelog.

-- 
Jens Axboe
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help