On Mon, 2018-10-29 at 14:09 -0600, Jens Axboe wrote: +AD4 hctx-+AD4-type will be set to the value of the first type. This is all driver +AD4 private, blk-mq could not care less what the value of the type means. +AD4 +AD4 As to the other question, it works just fine since that is the queue +AD4 that is being accessed. There's no confusion there. I think you're +AD4 misunderstanding how it's seutp. To use nvme as the example, type 0 +AD4 would be reads, 1 writes, and 2 pollable queues. If reads and writes +AD4 share the same set of hardware queues, then type 1 simply doesn't +AD4 exist in terms of -+AD4-flags+AF8-to+AF8-type() return value. This is purely +AD4 driven by the driver. That hook is the only decider of where something +AD4 will go. If we share hctx sets, we share the same hardware queue as +AD4 well. There is just the one set for that case. How about adding a comment in blk-mq.h that explains that hardware queues can be shared among different hardware queue types? I think this is nontrivial and deserves a comment. Thanks, Bart.