[PATCH v8 8/8] nvme-multipath: queue-depth support for marginal paths
Hannes Reinecke
hare at suse.de
Wed Jul 9 23:36:12 PDT 2025
On 7/10/25 00:03, John Meneghini wrote:
> Hannes, this patch fixes the queue-depth scheduler. Please take a look.
>
> On 7/9/25 5:26 PM, Bryan Gurney wrote:
>> From: John Meneghini <jmeneghi at redhat.com>
>>
>> Exclude marginal paths from queue-depth io policy. In the case where all
>> paths are marginal and no optimized or non-optimized path is found, we
>> fall back to __nvme_find_path which selects the best marginal path.
>>
>> Tested-by: Bryan Gurney <bgurney at redhat.com>
>> Signed-off-by: John Meneghini <jmeneghi at redhat.com>
>> ---
>> drivers/nvme/host/multipath.c | 7 ++++++-
>> 1 file changed, 6 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/nvme/host/multipath.c b/drivers/nvme/host/
>> multipath.c
>> index 8d4e54bb4261..767583e8454b 100644
>> --- a/drivers/nvme/host/multipath.c
>> +++ b/drivers/nvme/host/multipath.c
>> @@ -420,6 +420,9 @@ static struct nvme_ns
>> *nvme_queue_depth_path(struct nvme_ns_head *head)
>> if (nvme_path_is_disabled(ns))
>> continue;
>> + if (nvme_ctrl_is_marginal(ns->ctrl))
>> + continue;
>> +
>> depth = atomic_read(&ns->ctrl->nr_active);
>> switch (ns->ana_state) {
>> @@ -443,7 +446,9 @@ static struct nvme_ns
>> *nvme_queue_depth_path(struct nvme_ns_head *head)
>> return best_opt;
>> }
>> - return best_opt ? best_opt : best_nonopt;
>> + best_opt = (best_opt) ? best_opt : best_nonopt;
>> +
>> + return best_opt ? best_opt : __nvme_find_path(head, numa_node_id());
>> }
>> static inline bool nvme_path_is_optimized(struct nvme_ns *ns)
>
Hmm. Not convinced. I would expect a 'marginal' path to behave different
(performance-wise) than unaffected paths. And the queue-depth scheduler
should be able to handle paths with different performance
characteristics just fine.
(Is is possible that your results are test artifacts? I guess
your tool just injects FPIN messages with no performance impact,
resulting in this behaviour...)
But if you want to exclude marginal paths from queue depth:
by all means, go for it.
Cheers,
Hannes
--
Dr. Hannes Reinecke Kernel Storage Architect
hare at suse.de +49 911 74053 688
SUSE Software Solutions GmbH, Frankenstr. 146, 90461 Nürnberg
HRB 36809 (AG Nürnberg), GF: I. Totev, A. McDonald, W. Knoblich
More information about the Linux-nvme
mailing list