nvmet: return bool from nvmet_passthru_ctrl and nvmet_is_passthru_req
The target core code never needs the host-side nvme_ctrl structure. Open code two uses of nvmet_is_passthru_req in passthru.c, and then switch the helpers used by the core to return bool. Also rename the fuctions to better match their usage: nvmet_passthru_ctrl -> nvmet_is_passthru_subsys nvmet_req_passthru_ctrl -> nvmet_is_passthru_req Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
This commit is contained in:
parent
77d651a655
commit
ab7a2737ac
@ -1015,7 +1015,7 @@ u16 nvmet_parse_admin_cmd(struct nvmet_req *req)
|
|||||||
if (unlikely(ret))
|
if (unlikely(ret))
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
if (nvmet_req_passthru_ctrl(req))
|
if (nvmet_is_passthru_req(req))
|
||||||
return nvmet_parse_passthru_admin_cmd(req);
|
return nvmet_parse_passthru_admin_cmd(req);
|
||||||
|
|
||||||
switch (cmd->common.opcode) {
|
switch (cmd->common.opcode) {
|
||||||
|
@ -1028,7 +1028,7 @@ nvmet_subsys_attr_version_store_locked(struct nvmet_subsys *subsys,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* passthru subsystems use the underlying controller's version */
|
/* passthru subsystems use the underlying controller's version */
|
||||||
if (nvmet_passthru_ctrl(subsys))
|
if (nvmet_is_passthru_subsys(subsys))
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
ret = sscanf(page, "%d.%d.%d\n", &major, &minor, &tertiary);
|
ret = sscanf(page, "%d.%d.%d\n", &major, &minor, &tertiary);
|
||||||
|
@ -553,7 +553,7 @@ int nvmet_ns_enable(struct nvmet_ns *ns)
|
|||||||
mutex_lock(&subsys->lock);
|
mutex_lock(&subsys->lock);
|
||||||
ret = 0;
|
ret = 0;
|
||||||
|
|
||||||
if (nvmet_passthru_ctrl(subsys)) {
|
if (nvmet_is_passthru_subsys(subsys)) {
|
||||||
pr_info("cannot enable both passthru and regular namespaces for a single subsystem");
|
pr_info("cannot enable both passthru and regular namespaces for a single subsystem");
|
||||||
goto out_unlock;
|
goto out_unlock;
|
||||||
}
|
}
|
||||||
@ -869,7 +869,7 @@ static u16 nvmet_parse_io_cmd(struct nvmet_req *req)
|
|||||||
if (unlikely(ret))
|
if (unlikely(ret))
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
if (nvmet_req_passthru_ctrl(req))
|
if (nvmet_is_passthru_req(req))
|
||||||
return nvmet_parse_passthru_io_cmd(req);
|
return nvmet_parse_passthru_io_cmd(req);
|
||||||
|
|
||||||
ret = nvmet_req_find_ns(req);
|
ret = nvmet_req_find_ns(req);
|
||||||
@ -1207,7 +1207,7 @@ static void nvmet_init_cap(struct nvmet_ctrl *ctrl)
|
|||||||
/* maximum queue entries supported: */
|
/* maximum queue entries supported: */
|
||||||
ctrl->cap |= NVMET_QUEUE_SIZE - 1;
|
ctrl->cap |= NVMET_QUEUE_SIZE - 1;
|
||||||
|
|
||||||
if (nvmet_passthru_ctrl(ctrl->subsys))
|
if (nvmet_is_passthru_subsys(ctrl->subsys))
|
||||||
nvmet_passthrough_override_cap(ctrl);
|
nvmet_passthrough_override_cap(ctrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -582,7 +582,7 @@ int nvmet_passthru_ctrl_enable(struct nvmet_subsys *subsys);
|
|||||||
void nvmet_passthru_ctrl_disable(struct nvmet_subsys *subsys);
|
void nvmet_passthru_ctrl_disable(struct nvmet_subsys *subsys);
|
||||||
u16 nvmet_parse_passthru_admin_cmd(struct nvmet_req *req);
|
u16 nvmet_parse_passthru_admin_cmd(struct nvmet_req *req);
|
||||||
u16 nvmet_parse_passthru_io_cmd(struct nvmet_req *req);
|
u16 nvmet_parse_passthru_io_cmd(struct nvmet_req *req);
|
||||||
static inline struct nvme_ctrl *nvmet_passthru_ctrl(struct nvmet_subsys *subsys)
|
static inline bool nvmet_is_passthru_subsys(struct nvmet_subsys *subsys)
|
||||||
{
|
{
|
||||||
return subsys->passthru_ctrl;
|
return subsys->passthru_ctrl;
|
||||||
}
|
}
|
||||||
@ -601,16 +601,15 @@ static inline u16 nvmet_parse_passthru_io_cmd(struct nvmet_req *req)
|
|||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
static inline struct nvme_ctrl *nvmet_passthru_ctrl(struct nvmet_subsys *subsys)
|
static inline bool nvmet_is_passthru_subsys(struct nvmet_subsys *subsys)
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_NVME_TARGET_PASSTHRU */
|
#endif /* CONFIG_NVME_TARGET_PASSTHRU */
|
||||||
|
|
||||||
static inline struct nvme_ctrl *
|
static inline bool nvmet_is_passthru_req(struct nvmet_req *req)
|
||||||
nvmet_req_passthru_ctrl(struct nvmet_req *req)
|
|
||||||
{
|
{
|
||||||
return nvmet_passthru_ctrl(nvmet_req_subsys(req));
|
return nvmet_is_passthru_subsys(nvmet_req_subsys(req));
|
||||||
}
|
}
|
||||||
|
|
||||||
void nvmet_passthrough_override_cap(struct nvmet_ctrl *ctrl);
|
void nvmet_passthrough_override_cap(struct nvmet_ctrl *ctrl);
|
||||||
|
@ -228,7 +228,7 @@ static int nvmet_passthru_map_sg(struct nvmet_req *req, struct request *rq)
|
|||||||
|
|
||||||
static void nvmet_passthru_execute_cmd(struct nvmet_req *req)
|
static void nvmet_passthru_execute_cmd(struct nvmet_req *req)
|
||||||
{
|
{
|
||||||
struct nvme_ctrl *ctrl = nvmet_req_passthru_ctrl(req);
|
struct nvme_ctrl *ctrl = nvmet_req_subsys(req)->passthru_ctrl;
|
||||||
struct request_queue *q = ctrl->admin_q;
|
struct request_queue *q = ctrl->admin_q;
|
||||||
struct nvme_ns *ns = NULL;
|
struct nvme_ns *ns = NULL;
|
||||||
struct request *rq = NULL;
|
struct request *rq = NULL;
|
||||||
@ -309,7 +309,7 @@ out:
|
|||||||
*/
|
*/
|
||||||
static void nvmet_passthru_set_host_behaviour(struct nvmet_req *req)
|
static void nvmet_passthru_set_host_behaviour(struct nvmet_req *req)
|
||||||
{
|
{
|
||||||
struct nvme_ctrl *ctrl = nvmet_req_passthru_ctrl(req);
|
struct nvme_ctrl *ctrl = nvmet_req_subsys(req)->passthru_ctrl;
|
||||||
struct nvme_feat_host_behavior *host;
|
struct nvme_feat_host_behavior *host;
|
||||||
u16 status = NVME_SC_INTERNAL;
|
u16 status = NVME_SC_INTERNAL;
|
||||||
int ret;
|
int ret;
|
||||||
|
Loading…
Reference in New Issue
Block a user