[PATCH 04/10] nvmet: remove nsid param from nvmet_find_namespace()
Chaitanya Kulkarni
chaitanya.kulkarni at wdc.com
Mon Feb 1 00:41:32 EST 2021
The nvmet_find_namespace() takes nsid parameter which is from NVMe
commands structures such as get_log_page, identify, rw and common. All
these commands have same offset for the nsid field.
Derive nsid from req (req->cmd->common.nsid) and remove the extra
parameter from the nvmet_find_namespace().
Signed-off-by: Chaitanya Kulkarni <chaitanya.kulkarni at wdc.com>
---
drivers/nvme/target/admin-cmd.c | 10 +++++-----
drivers/nvme/target/core.c | 6 ++++--
drivers/nvme/target/nvmet.h | 2 +-
3 files changed, 10 insertions(+), 8 deletions(-)
diff --git a/drivers/nvme/target/admin-cmd.c b/drivers/nvme/target/admin-cmd.c
index fbb5fe18f2d4..ec64218db03c 100644
--- a/drivers/nvme/target/admin-cmd.c
+++ b/drivers/nvme/target/admin-cmd.c
@@ -77,7 +77,7 @@ static u16 nvmet_get_smart_log_nsid(struct nvmet_req *req,
u64 host_reads, host_writes, data_units_read, data_units_written;
u16 status;
- status = nvmet_find_namespace(req, req->cmd->get_log_page.nsid);
+ status = nvmet_find_namespace(req);
if (status) {
pr_err("Could not find namespace id : %d\n",
le32_to_cpu(req->cmd->get_log_page.nsid));
@@ -475,7 +475,7 @@ static void nvmet_execute_identify_ns(struct nvmet_req *req)
goto out;
}
- status = nvmet_find_namespace(req, req->cmd->identify.nsid);
+ status = nvmet_find_namespace(req);
if (status) {
/*
* According to spec : If the specified namespace is
@@ -611,7 +611,7 @@ static void nvmet_execute_identify_desclist(struct nvmet_req *req)
u16 status;
off_t off = 0;
- status = nvmet_find_namespace(req, req->cmd->identify.nsid);
+ status = nvmet_find_namespace(req);
if (status)
goto out;
@@ -695,7 +695,7 @@ static u16 nvmet_set_feat_write_protect(struct nvmet_req *req)
struct nvmet_subsys *subsys = req->sq->ctrl->subsys;
u16 status;
- status = nvmet_find_namespace(req, req->cmd->rw.nsid);
+ status = nvmet_find_namespace(req);
if (unlikely(status))
return status;
@@ -798,7 +798,7 @@ static u16 nvmet_get_feat_write_protect(struct nvmet_req *req)
struct nvmet_subsys *subsys = req->sq->ctrl->subsys;
u16 result;
- result = nvmet_find_namespace(req, req->cmd->common.nsid);
+ result = nvmet_find_namespace(req);
if (result)
return result;
diff --git a/drivers/nvme/target/core.c b/drivers/nvme/target/core.c
index 6ebcbc637265..9c6683f8e790 100644
--- a/drivers/nvme/target/core.c
+++ b/drivers/nvme/target/core.c
@@ -417,8 +417,10 @@ void nvmet_stop_keep_alive_timer(struct nvmet_ctrl *ctrl)
cancel_delayed_work_sync(&ctrl->ka_work);
}
-u16 nvmet_find_namespace(struct nvmet_req *req, __le32 id)
+u16 nvmet_find_namespace(struct nvmet_req *req)
{
+ __le32 id = le32_to_cpu(req->cmd->common.nsid);
+
req->ns = xa_load(&req->sq->ctrl->subsys->namespaces, le32_to_cpu(id));
if (unlikely(!req->ns)) {
req->error_loc = offsetof(struct nvme_common_command, nsid);
@@ -863,7 +865,7 @@ static u16 nvmet_parse_io_cmd(struct nvmet_req *req)
if (nvmet_req_passthru_ctrl(req))
return nvmet_parse_passthru_io_cmd(req);
- ret = nvmet_find_namespace(req, cmd->rw.nsid);
+ ret = nvmet_find_namespace(req);
if (unlikely(ret))
return ret;
ret = nvmet_check_ana_state(req->port, req->ns);
diff --git a/drivers/nvme/target/nvmet.h b/drivers/nvme/target/nvmet.h
index 80811fccb431..6864fd916bb5 100644
--- a/drivers/nvme/target/nvmet.h
+++ b/drivers/nvme/target/nvmet.h
@@ -443,7 +443,7 @@ struct nvmet_subsys *nvmet_subsys_alloc(const char *subsysnqn,
void nvmet_subsys_put(struct nvmet_subsys *subsys);
void nvmet_subsys_del_ctrls(struct nvmet_subsys *subsys);
-u16 nvmet_find_namespace(struct nvmet_req *req, __le32 id);
+u16 nvmet_find_namespace(struct nvmet_req *req);
void nvmet_put_namespace(struct nvmet_ns *ns);
int nvmet_ns_enable(struct nvmet_ns *ns);
void nvmet_ns_disable(struct nvmet_ns *ns);
--
2.22.1
More information about the Linux-nvme
mailing list