nvme: introduce nvme_is_fabrics to check fabrics cmd
This patch introduces a nvme_is_fabrics() inline function to check whether or not the given command structure is for fabrics. Signed-off-by: Minwoo Im <minwoo.im.dev@gmail.com> Reviewed-by: Sagi Grimberg <sagi@grimberg.me> Signed-off-by: Sagi Grimberg <sagi@grimberg.me> Signed-off-by: Christoph Hellwig <hch@lst.de>
This commit is contained in:
Родитель
1a87ee657c
Коммит
7a1f46e3f7
|
@ -578,7 +578,7 @@ bool __nvmf_check_ready(struct nvme_ctrl *ctrl, struct request *rq,
|
|||
switch (ctrl->state) {
|
||||
case NVME_CTRL_NEW:
|
||||
case NVME_CTRL_CONNECTING:
|
||||
if (req->cmd->common.opcode == nvme_fabrics_command &&
|
||||
if (nvme_is_fabrics(req->cmd) &&
|
||||
req->cmd->fabrics.fctype == nvme_fabrics_type_connect)
|
||||
return true;
|
||||
break;
|
||||
|
|
|
@ -873,7 +873,7 @@ bool nvmet_req_init(struct nvmet_req *req, struct nvmet_cq *cq,
|
|||
status = nvmet_parse_connect_cmd(req);
|
||||
else if (likely(req->sq->qid != 0))
|
||||
status = nvmet_parse_io_cmd(req);
|
||||
else if (req->cmd->common.opcode == nvme_fabrics_command)
|
||||
else if (nvme_is_fabrics(req->cmd))
|
||||
status = nvmet_parse_fabrics_cmd(req);
|
||||
else if (req->sq->ctrl->subsys->type == NVME_NQN_DISC)
|
||||
status = nvmet_parse_discovery_cmd(req);
|
||||
|
|
|
@ -268,7 +268,7 @@ u16 nvmet_parse_connect_cmd(struct nvmet_req *req)
|
|||
{
|
||||
struct nvme_command *cmd = req->cmd;
|
||||
|
||||
if (cmd->common.opcode != nvme_fabrics_command) {
|
||||
if (!nvme_is_fabrics(cmd)) {
|
||||
pr_err("invalid command 0x%x on unconnected queue.\n",
|
||||
cmd->fabrics.opcode);
|
||||
req->error_loc = offsetof(struct nvme_common_command, opcode);
|
||||
|
|
|
@ -1806,7 +1806,7 @@ nvmet_fc_prep_fcp_rsp(struct nvmet_fc_tgtport *tgtport,
|
|||
*/
|
||||
rspcnt = atomic_inc_return(&fod->queue->zrspcnt);
|
||||
if (!(rspcnt % fod->queue->ersp_ratio) ||
|
||||
sqe->opcode == nvme_fabrics_command ||
|
||||
nvme_is_fabrics((struct nvme_command *) sqe) ||
|
||||
xfr_length != fod->req.transfer_len ||
|
||||
(le16_to_cpu(cqe->status) & 0xFFFE) || cqewd[0] || cqewd[1] ||
|
||||
(sqe->flags & (NVME_CMD_FUSE_FIRST | NVME_CMD_FUSE_SECOND)) ||
|
||||
|
|
|
@ -1165,6 +1165,11 @@ struct nvme_command {
|
|||
};
|
||||
};
|
||||
|
||||
static inline bool nvme_is_fabrics(struct nvme_command *cmd)
|
||||
{
|
||||
return cmd->common.opcode == nvme_fabrics_command;
|
||||
}
|
||||
|
||||
struct nvme_error_slot {
|
||||
__le64 error_count;
|
||||
__le16 sqid;
|
||||
|
@ -1186,7 +1191,7 @@ static inline bool nvme_is_write(struct nvme_command *cmd)
|
|||
*
|
||||
* Why can't we simply have a Fabrics In and Fabrics out command?
|
||||
*/
|
||||
if (unlikely(cmd->common.opcode == nvme_fabrics_command))
|
||||
if (unlikely(nvme_is_fabrics(cmd)))
|
||||
return cmd->fabrics.fctype & 1;
|
||||
return cmd->common.opcode & 1;
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче