diff options
author | Christoph Hellwig <hch@lst.de> | 2020-09-28 13:55:22 +0200 |
---|---|---|
committer | Christoph Hellwig <hch@lst.de> | 2020-10-07 07:56:19 +0200 |
commit | b2dc748a70c65a1b4eb1b9fceab57662cfd83e41 (patch) | |
tree | 5573afb2170ffd50d7b351d8ed4e6d83675fef81 /drivers | |
parent | nvme: query namespace identifiers before adding the namespace (diff) | |
download | linux-b2dc748a70c65a1b4eb1b9fceab57662cfd83e41.tar.xz linux-b2dc748a70c65a1b4eb1b9fceab57662cfd83e41.zip |
nvme: move nvme_validate_ns
Move nvme_validate_ns just above its only remaining caller.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Keith Busch <kbusch@kernel.org>
Reviewed-by: Damien Le Moal <damien.lemoal@wdc.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/nvme/host/core.c | 74 |
1 files changed, 37 insertions, 37 deletions
diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c index ad18c32b36e7..07309f6c14fa 100644 --- a/drivers/nvme/host/core.c +++ b/drivers/nvme/host/core.c @@ -2156,43 +2156,6 @@ out_unfreeze: return ret; } -static int nvme_validate_ns(struct nvme_ns *ns, struct nvme_ns_ids *ids) -{ - struct nvme_ctrl *ctrl = ns->ctrl; - struct nvme_id_ns *id; - int ret = 0; - - if (test_bit(NVME_NS_DEAD, &ns->flags)) { - set_capacity(ns->disk, 0); - return -ENODEV; - } - - ret = nvme_identify_ns(ctrl, ns->head->ns_id, ids, &id); - if (ret) - goto out; - - if (!nvme_ns_ids_equal(&ns->head->ids, ids)) { - dev_err(ctrl->device, - "identifiers changed for nsid %d\n", ns->head->ns_id); - ret = -ENODEV; - goto free_id; - } - - ret = nvme_update_ns_info(ns, id); -free_id: - kfree(id); -out: - /* - * Only fail the function if we got a fatal error back from the - * device, otherwise ignore the error and just move on. - */ - if (ret == -ENOMEM || (ret > 0 && !(ret & NVME_SC_DNR))) - ret = 0; - else if (ret > 0) - ret = blk_status_to_errno(nvme_error_status(ret)); - return ret; -} - static char nvme_pr_type(enum pr_type type) { switch (type) { @@ -3973,6 +3936,43 @@ static void nvme_ns_remove_by_nsid(struct nvme_ctrl *ctrl, u32 nsid) } } +static int nvme_validate_ns(struct nvme_ns *ns, struct nvme_ns_ids *ids) +{ + struct nvme_ctrl *ctrl = ns->ctrl; + struct nvme_id_ns *id; + int ret = 0; + + if (test_bit(NVME_NS_DEAD, &ns->flags)) { + set_capacity(ns->disk, 0); + return -ENODEV; + } + + ret = nvme_identify_ns(ctrl, ns->head->ns_id, ids, &id); + if (ret) + goto out; + + if (!nvme_ns_ids_equal(&ns->head->ids, ids)) { + dev_err(ctrl->device, + "identifiers changed for nsid %d\n", ns->head->ns_id); + ret = -ENODEV; + goto free_id; + } + + ret = nvme_update_ns_info(ns, id); +free_id: + kfree(id); +out: + /* + * Only fail the function if we got a fatal error back from the + * device, otherwise ignore the error and just move on. + */ + if (ret == -ENOMEM || (ret > 0 && !(ret & NVME_SC_DNR))) + ret = 0; + else if (ret > 0) + ret = blk_status_to_errno(nvme_error_status(ret)); + return ret; +} + static void nvme_validate_or_alloc_ns(struct nvme_ctrl *ctrl, unsigned nsid) { struct nvme_ns_ids ids = { }; |