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

From: Sagi Grimberg
Date: Tue Oct 30 2018 - 20:49:11 EST




@@ -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?

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?