Re: [PATCH v2] nvme-multipath: Early exit if no path is available

From: Chao Leng
Date: Wed Jan 27 2021 - 20:37:39 EST




On 2021/1/27 18:30, Daniel Wagner wrote:
nvme_round_robin_path() should test if the return ns pointer is
valid. nvme_next_ns() will return a NULL pointer if there is no path
left.

Fixes: 75c10e732724 ("nvme-multipath: round-robin I/O policy")
Cc: Hannes Reinecke <hare@xxxxxxx>
Signed-off-by: Daniel Wagner <dwagner@xxxxxxx>
---
v2:
- moved NULL test into the if conditional statement
- added Fixes tag

drivers/nvme/host/multipath.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/nvme/host/multipath.c b/drivers/nvme/host/multipath.c
index 9ac762b28811..282b7a4ea9a9 100644
--- a/drivers/nvme/host/multipath.c
+++ b/drivers/nvme/host/multipath.c
@@ -221,7 +221,7 @@ static struct nvme_ns *nvme_round_robin_path(struct nvme_ns_head *head,
}
for (ns = nvme_next_ns(head, old);
- ns != old;
+ ns && ns != old;
nvme_round_robin_path just be called when !"old".
nvme_next_ns should not return NULL when !"old".
It seems unnecessary to add checking "ns".
Is there a bug that "old" is not in "head" list?
If yes, we should fix it.
ns = nvme_next_ns(head, ns)) {
if (nvme_path_is_disabled(ns))
continue;