Re: [PATCH v2] blk-mq: use a housekeeping CPU for passthrough requests on isolated hctxs

From: Nilay Shroff

Date: Tue Nov 03 2026 - 12:08:34 EST


On 11/3/26 8:27 PM, Daniel Wagner wrote:
blk_mq_alloc_request_hctx uses the first online CPU in hctx->cpumask to
select the software context for a request.

Since commit a46c27026da1 ("blk-mq: don't schedule block kworker on
isolated CPUs"), hctx->cpumask excludes isolated CPUs. If a hardware
context is mapped only to isolated CPUs, the mask is empty and
blk_mq_alloc_request_hctx fails with -EXDEV.

The NVMe fabrics transports use blk_mq_alloc_request_hctx to allocate
the Connect command for each I/O queue. As a result, connecting to a
controller can fail when using isolcpus=domain or an isolated cpuset
partition.

Passthrough requests bypass the software queues and go directly to
hctx->dispatch. Their software context is only used to select the
completion CPU and as a hint when freeing the tag.

Use the software context of an online housekeeping CPU for passthrough
requests.

Fixes: a46c27026da1 ("blk-mq: don't schedule block kworker on isolated CPUs")
Tested-by: Maurizio Lombardi<mlombard@xxxxxxxxxx>
Signed-off-by: Daniel Wagner<dwagner@xxxxxxx>

Looks good to me:
Reviewed-by: Nilay Shroff <nilay@xxxxxxxxxxxxx>