* [PATCH] nvme: clean up error handling in nvme_init_ns_head
@ 2020-04-22 8:00 Christoph Hellwig
2020-04-22 16:55 ` Keith Busch
2020-04-23 6:27 ` Sagi Grimberg
0 siblings, 2 replies; 3+ messages in thread
From: Christoph Hellwig @ 2020-04-22 8:00 UTC (permalink / raw)
To: sagi, kbusch; +Cc: linux-nvme
Use a common label for putting the nshead if needed and only convert
nvme status codes for the one case where it actually is needed.
Signed-off-by: Christoph Hellwig <hch@lst.de>
---
drivers/nvme/host/core.c | 26 +++++++++++++-------------
1 file changed, 13 insertions(+), 13 deletions(-)
diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c
index dfb064b4334f..15bc1b342412 100644
--- a/drivers/nvme/host/core.c
+++ b/drivers/nvme/host/core.c
@@ -3501,8 +3501,11 @@ static int nvme_init_ns_head(struct nvme_ns *ns, unsigned nsid,
int ret = 0;
ret = nvme_report_ns_ids(ctrl, nsid, id, &ids);
- if (ret)
- goto out;
+ if (ret) {
+ if (ret < 0)
+ return ret;
+ return blk_status_to_errno(nvme_error_status(ret));
+ }
mutex_lock(&ctrl->subsys->lock);
head = nvme_find_ns_head(ctrl->subsys, nsid);
@@ -3514,32 +3517,29 @@ static int nvme_init_ns_head(struct nvme_ns *ns, unsigned nsid,
}
head->shared = is_shared;
} else {
+ ret = -EINVAL;
if (!is_shared || !head->shared) {
dev_err(ctrl->device,
- "Duplicate unshared namespace %d\n",
- nsid);
- ret = -EINVAL;
- nvme_put_ns_head(head);
- goto out_unlock;
+ "Duplicate unshared namespace %d\n", nsid);
+ goto out_put_ns_head;
}
if (!nvme_ns_ids_equal(&head->ids, &ids)) {
dev_err(ctrl->device,
"IDs don't match for shared namespace %d\n",
nsid);
- ret = -EINVAL;
- nvme_put_ns_head(head);
- goto out_unlock;
+ goto out_put_ns_head;
}
}
list_add_tail(&ns->siblings, &head->list);
ns->head = head;
+ mutex_unlock(&ctrl->subsys->lock);
+ return 0;
+out_put_ns_head:
+ nvme_put_ns_head(head);
out_unlock:
mutex_unlock(&ctrl->subsys->lock);
-out:
- if (ret > 0)
- ret = blk_status_to_errno(nvme_error_status(ret));
return ret;
}
--
2.26.1
_______________________________________________
linux-nvme mailing list
linux-nvme@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-nvme
^ permalink raw reply related [flat|nested] 3+ messages in thread
end of thread, other threads:[~2020-04-23 6:27 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-04-22 8:00 [PATCH] nvme: clean up error handling in nvme_init_ns_head Christoph Hellwig
2020-04-22 16:55 ` Keith Busch
2020-04-23 6:27 ` Sagi Grimberg
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).