[PATCH 1/2] blk-mq: dynamic h/w context count
Jon Derrick
jonathan.derrick at intel.com
Fri Jan 15 10:22:27 PST 2016
On Thu, Dec 17, 2015 at 05:08:14PM -0700, Keith Busch wrote:
> The hardware's provided queue count may change at runtime with resource
> provisioning. This patch allows a block driver to alter the number of
> h/w queues available when its resource count changes.
>
> The main part is a new blk-mq API to request a new number of h/w queues
> for a given live tag set. The new API freezes all queues using that set,
> then adjusts the allocated count prior to remapping these to CPUs.
>
> The bulk of the rest just shifts where h/w contexts and all their
> artifacts are allocated and freed.
>
> The number of max h/w contexts is capped to the number of possible cpus
> since there is no use for more than that. As such, all pre-allocated
> memory for pointers need to account for the max possible rather than
> the initial number of queues.
>
> A side effect of this is that the blk-mq will proceed successfully as
> long as it can allocate at least one h/w context. Previously it would
> fail request queue initialization if less than the requested number
> was allocated.
>
> Signed-off-by: Keith Busch <keith.busch at intel.com>
> ---
Looks good, works well,
Tested-by: Jon Derrick <jonathan.derrick at intel.com>
More information about the Linux-nvme
mailing list