Re: [PATCH v2] block: fix rdma queue mapping
From: Ming Lei <hidden>
Date: 2018-08-21 05:22:55
Also in:
linux-nvme
On Mon, Aug 20, 2018 at 01:54:20PM -0700, Sagi Grimberg wrote:
nvme-rdma attempts to map queues based on irq vector affinity. However, for some devices, completion vector irq affinity is configurable by the user which can break the existing assumption that irq vectors are optimally arranged over the host cpu cores. So we map queues in two stages: First map queues according to corresponding to the completion vector IRQ affinity taking the first cpu in the vector affinity map. if the current irq affinity is arranged such that a vector is not assigned to any distinct cpu, we map it to a cpu that is on the same node. If numa affinity can not be sufficed, we map it to any unmapped cpu we can find. Then, map the remaining cpus in the possible cpumap naively.
I guess this way still can't fix the request allocation crash issue triggered by using blk_mq_alloc_request_hctx(), in which one hw queue may not be mapped from any online CPU. Maybe this patch isn't for this issue, but it is closely related. Thanks, Ming