nvmet: add nvmet_req_subsys() helper
Just like what we have to get the passthru ctrl from the req, add an helper to get the subsystem associated with the nvmet_req() instead of open coding the chain of structures. Signed-off-by: Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com> Signed-off-by: Christoph Hellwig <hch@lst.de>
This commit is contained in:
Родитель
d86481e924
Коммит
20c2c3bb83
|
@ -683,7 +683,7 @@ static u16 nvmet_write_protect_flush_sync(struct nvmet_req *req)
|
|||
static u16 nvmet_set_feat_write_protect(struct nvmet_req *req)
|
||||
{
|
||||
u32 write_protect = le32_to_cpu(req->cmd->common.cdw11);
|
||||
struct nvmet_subsys *subsys = req->sq->ctrl->subsys;
|
||||
struct nvmet_subsys *subsys = nvmet_req_subsys(req);
|
||||
u16 status;
|
||||
|
||||
status = nvmet_req_find_ns(req);
|
||||
|
@ -742,7 +742,7 @@ u16 nvmet_set_feat_async_event(struct nvmet_req *req, u32 mask)
|
|||
|
||||
void nvmet_execute_set_features(struct nvmet_req *req)
|
||||
{
|
||||
struct nvmet_subsys *subsys = req->sq->ctrl->subsys;
|
||||
struct nvmet_subsys *subsys = nvmet_req_subsys(req);
|
||||
u32 cdw10 = le32_to_cpu(req->cmd->common.cdw10);
|
||||
u32 cdw11 = le32_to_cpu(req->cmd->common.cdw11);
|
||||
u16 status = 0;
|
||||
|
@ -786,7 +786,7 @@ void nvmet_execute_set_features(struct nvmet_req *req)
|
|||
|
||||
static u16 nvmet_get_feat_write_protect(struct nvmet_req *req)
|
||||
{
|
||||
struct nvmet_subsys *subsys = req->sq->ctrl->subsys;
|
||||
struct nvmet_subsys *subsys = nvmet_req_subsys(req);
|
||||
u32 result;
|
||||
|
||||
result = nvmet_req_find_ns(req);
|
||||
|
@ -816,7 +816,7 @@ void nvmet_get_feat_async_event(struct nvmet_req *req)
|
|||
|
||||
void nvmet_execute_get_features(struct nvmet_req *req)
|
||||
{
|
||||
struct nvmet_subsys *subsys = req->sq->ctrl->subsys;
|
||||
struct nvmet_subsys *subsys = nvmet_req_subsys(req);
|
||||
u32 cdw10 = le32_to_cpu(req->cmd->common.cdw10);
|
||||
u16 status = 0;
|
||||
|
||||
|
@ -923,7 +923,7 @@ u16 nvmet_parse_admin_cmd(struct nvmet_req *req)
|
|||
|
||||
if (nvme_is_fabrics(cmd))
|
||||
return nvmet_parse_fabrics_cmd(req);
|
||||
if (req->sq->ctrl->subsys->type == NVME_NQN_DISC)
|
||||
if (nvmet_req_subsys(req)->type == NVME_NQN_DISC)
|
||||
return nvmet_parse_discovery_cmd(req);
|
||||
|
||||
ret = nvmet_check_ctrl_status(req, cmd);
|
||||
|
|
|
@ -430,7 +430,7 @@ u16 nvmet_req_find_ns(struct nvmet_req *req)
|
|||
{
|
||||
u32 nsid = le32_to_cpu(req->cmd->common.nsid);
|
||||
|
||||
req->ns = xa_load(&req->sq->ctrl->subsys->namespaces, nsid);
|
||||
req->ns = xa_load(&nvmet_req_subsys(req)->namespaces, nsid);
|
||||
if (unlikely(!req->ns)) {
|
||||
req->error_loc = offsetof(struct nvme_common_command, nsid);
|
||||
return NVME_SC_INVALID_NS | NVME_SC_DNR;
|
||||
|
|
|
@ -551,6 +551,11 @@ static inline u32 nvmet_dsm_len(struct nvmet_req *req)
|
|||
sizeof(struct nvme_dsm_range);
|
||||
}
|
||||
|
||||
static inline struct nvmet_subsys *nvmet_req_subsys(struct nvmet_req *req)
|
||||
{
|
||||
return req->sq->ctrl->subsys;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_NVME_TARGET_PASSTHRU
|
||||
void nvmet_passthru_subsys_free(struct nvmet_subsys *subsys);
|
||||
int nvmet_passthru_ctrl_enable(struct nvmet_subsys *subsys);
|
||||
|
@ -585,7 +590,7 @@ static inline struct nvme_ctrl *nvmet_passthru_ctrl(struct nvmet_subsys *subsys)
|
|||
static inline struct nvme_ctrl *
|
||||
nvmet_req_passthru_ctrl(struct nvmet_req *req)
|
||||
{
|
||||
return nvmet_passthru_ctrl(req->sq->ctrl->subsys);
|
||||
return nvmet_passthru_ctrl(nvmet_req_subsys(req));
|
||||
}
|
||||
|
||||
u16 errno_to_nvme_status(struct nvmet_req *req, int errno);
|
||||
|
|
|
@ -239,9 +239,9 @@ static void nvmet_passthru_execute_cmd(struct nvmet_req *req)
|
|||
}
|
||||
|
||||
q = ns->queue;
|
||||
timeout = req->sq->ctrl->subsys->io_timeout;
|
||||
timeout = nvmet_req_subsys(req)->io_timeout;
|
||||
} else {
|
||||
timeout = req->sq->ctrl->subsys->admin_timeout;
|
||||
timeout = nvmet_req_subsys(req)->admin_timeout;
|
||||
}
|
||||
|
||||
rq = nvme_alloc_request(q, req->cmd, 0);
|
||||
|
|
Загрузка…
Ссылка в новой задаче