| From 7135296e2172e3427b9ab38e617b8ad60b167db6 Mon Sep 17 00:00:00 2001 |
| From: Hannes Reinecke <hare@suse.de> |
| Date: Thu, 4 Jul 2019 08:10:46 +0200 |
| Subject: [PATCH] nvme-multipath: factor out a nvme_path_is_disabled helper |
| |
| commit ca7ae5c966bd4c00626d6ba05d68219f3c1fba36 upstream. |
| |
| Factor our a common helper to check if a path has been disabled |
| by something other than the per-namespace ANA state. |
| |
| Signed-off-by: Hannes Reinecke <hare@suse.com> |
| [hch: split from a bigger patch] |
| Signed-off-by: Christoph Hellwig <hch@lst.de> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/drivers/nvme/host/multipath.c b/drivers/nvme/host/multipath.c |
| index 0a93a480c4f2..b160fc5448e2 100644 |
| --- a/drivers/nvme/host/multipath.c |
| +++ b/drivers/nvme/host/multipath.c |
| @@ -167,14 +167,19 @@ void nvme_mpath_clear_ctrl_paths(struct nvme_ctrl *ctrl) |
| mutex_unlock(&ctrl->scan_lock); |
| } |
| |
| +static bool nvme_path_is_disabled(struct nvme_ns *ns) |
| +{ |
| + return ns->ctrl->state != NVME_CTRL_LIVE || |
| + test_bit(NVME_NS_ANA_PENDING, &ns->flags); |
| +} |
| + |
| static struct nvme_ns *__nvme_find_path(struct nvme_ns_head *head, int node) |
| { |
| int found_distance = INT_MAX, fallback_distance = INT_MAX, distance; |
| struct nvme_ns *found = NULL, *fallback = NULL, *ns; |
| |
| list_for_each_entry_rcu(ns, &head->list, siblings) { |
| - if (ns->ctrl->state != NVME_CTRL_LIVE || |
| - test_bit(NVME_NS_ANA_PENDING, &ns->flags)) |
| + if (nvme_path_is_disabled(ns)) |
| continue; |
| |
| if (READ_ONCE(head->subsys->iopolicy) == NVME_IOPOLICY_NUMA) |
| @@ -228,8 +233,7 @@ static struct nvme_ns *nvme_round_robin_path(struct nvme_ns_head *head, |
| for (ns = nvme_next_ns(head, old); |
| ns != old; |
| ns = nvme_next_ns(head, ns)) { |
| - if (ns->ctrl->state != NVME_CTRL_LIVE || |
| - test_bit(NVME_NS_ANA_PENDING, &ns->flags)) |
| + if (nvme_path_is_disabled(ns)) |
| continue; |
| |
| if (ns->ana_state == NVME_ANA_OPTIMIZED) { |
| -- |
| 2.27.0 |
| |