Re: [PATCH 04/14] blk-mq: pass in request/bio flags to queue mapping

From: Bart Van Assche
Date: Mon Oct 29 2018 - 13:30:41 EST

On Mon, 2018-10-29 at 10:37 -0600, Jens Axboe wrote:
+AD4 +AEAAQA -400,9 +-402,15 +AEAAQA void blk+AF8-mq+AF8-sched+AF8-insert+AF8-requests(struct request+AF8-queue +ACo-q,
+AD4 struct blk+AF8-mq+AF8-ctx +ACo-ctx,
+AD4 struct list+AF8-head +ACo-list, bool run+AF8-queue+AF8-async)
+AD4 +AHs
+AD4 - struct blk+AF8-mq+AF8-hw+AF8-ctx +ACo-hctx +AD0 blk+AF8-mq+AF8-map+AF8-queue(q, ctx-+AD4-cpu)+ADs
+AD4 - struct elevator+AF8-queue +ACo-e +AD0 hctx-+AD4-queue-+AD4-elevator+ADs
+AD4 +- struct blk+AF8-mq+AF8-hw+AF8-ctx +ACo-hctx+ADs
+AD4 +- struct elevator+AF8-queue +ACo-e+ADs
+AD4 +- struct request +ACo-rq+ADs
+AD4 +-
+AD4 +- /+ACo For list inserts, requests better be on the same hw queue +ACo-/
+AD4 +- rq +AD0 list+AF8-first+AF8-entry(list, struct request, queuelist)+ADs
+AD4 +- hctx +AD0 blk+AF8-mq+AF8-map+AF8-queue(q, rq-+AD4-cmd+AF8-flags, ctx-+AD4-cpu)+ADs

Passing all request cmd+AF8-flags bits to blk+AF8-mq+AF8-map+AF8-queue() makes it possible
for that function to depend on every single cmd+AF8-flags bit even if different
requests have different cmd+AF8-flags. Have you considered to pass the hw+AF8-ctx
type only to blk+AF8-mq+AF8-map+AF8-queue() to avoid that that function would start
depending on other cmd+AF8-flags?

Additionally, what guarantees that all requests in queuelist have the same
hw+AF8-ctx type? If a later patch will guarantee that, please mention that in
the comment about list+AF8-first+AF8-entry().