nvmf: remove spdk_nvmf_qpair::type field

The type of a queue is purely a function of its queue ID.

Add a helper function, spdk_nvmf_qpair_is_admin_queue(), to make the
logic more obvious (akin to nvme_qpair_is_admin_queue() in the NVMe
library).

Change-Id: I7cf5a82d1e3dc50834cc2ff03f5f88c5719c6952
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
Reviewed-on: https://review.gerrithub.io/398663
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
This commit is contained in:
Daniel Verkamp 2018-02-06 09:16:49 -07:00
parent dfa9aea409
commit d13d21e651
3 changed files with 12 additions and 15 deletions

View File

@ -240,8 +240,6 @@ spdk_nvmf_ctrlr_connect(struct spdk_nvmf_request *req)
qpair->qid = cmd->qid; qpair->qid = cmd->qid;
if (cmd->qid == 0) { if (cmd->qid == 0) {
qpair->type = QPAIR_TYPE_AQ;
SPDK_DEBUGLOG(SPDK_LOG_NVMF, "Connect Admin Queue for controller ID 0x%x\n", data->cntlid); SPDK_DEBUGLOG(SPDK_LOG_NVMF, "Connect Admin Queue for controller ID 0x%x\n", data->cntlid);
if (data->cntlid != 0xFFFF) { if (data->cntlid != 0xFFFF) {
@ -259,7 +257,6 @@ spdk_nvmf_ctrlr_connect(struct spdk_nvmf_request *req)
return SPDK_NVMF_REQUEST_EXEC_STATUS_COMPLETE; return SPDK_NVMF_REQUEST_EXEC_STATUS_COMPLETE;
} }
} else { } else {
qpair->type = QPAIR_TYPE_IOQ;
SPDK_DEBUGLOG(SPDK_LOG_NVMF, "Connect I/O Queue for controller id 0x%x\n", data->cntlid); SPDK_DEBUGLOG(SPDK_LOG_NVMF, "Connect I/O Queue for controller id 0x%x\n", data->cntlid);
ctrlr = spdk_nvmf_subsystem_get_ctrlr(subsystem, data->cntlid); ctrlr = spdk_nvmf_subsystem_get_ctrlr(subsystem, data->cntlid);
@ -1169,7 +1166,7 @@ spdk_nvmf_ctrlr_process_fabrics_cmd(struct spdk_nvmf_request *req)
req->rsp->nvme_cpl.status.sc = SPDK_NVME_SC_COMMAND_SEQUENCE_ERROR; req->rsp->nvme_cpl.status.sc = SPDK_NVME_SC_COMMAND_SEQUENCE_ERROR;
return SPDK_NVMF_REQUEST_EXEC_STATUS_COMPLETE; return SPDK_NVMF_REQUEST_EXEC_STATUS_COMPLETE;
} }
} else if (qpair->type == QPAIR_TYPE_AQ) { } else if (spdk_nvmf_qpair_is_admin_queue(qpair)) {
/* /*
* Controller session is established, and this is an admin queue. * Controller session is established, and this is an admin queue.
* Disallow Connect and allow other fabrics commands. * Disallow Connect and allow other fabrics commands.

View File

@ -141,16 +141,10 @@ struct spdk_nvmf_ns {
bool allocated; bool allocated;
}; };
enum spdk_nvmf_qpair_type {
QPAIR_TYPE_AQ = 0,
QPAIR_TYPE_IOQ = 1,
};
struct spdk_nvmf_qpair { struct spdk_nvmf_qpair {
struct spdk_nvmf_transport *transport; struct spdk_nvmf_transport *transport;
struct spdk_nvmf_ctrlr *ctrlr; struct spdk_nvmf_ctrlr *ctrlr;
struct spdk_nvmf_poll_group *group; struct spdk_nvmf_poll_group *group;
enum spdk_nvmf_qpair_type type;
uint16_t qid; uint16_t qid;
uint16_t sq_head; uint16_t sq_head;
@ -268,6 +262,12 @@ _spdk_nvmf_subsystem_get_ns(struct spdk_nvmf_subsystem *subsystem, uint32_t nsid
return ns; return ns;
} }
static inline bool
spdk_nvmf_qpair_is_admin_queue(struct spdk_nvmf_qpair *qpair)
{
return qpair->qid == 0;
}
#define OBJECT_NVMF_IO 0x30 #define OBJECT_NVMF_IO 0x30
#define TRACE_GROUP_NVMF 0x3 #define TRACE_GROUP_NVMF 0x3

View File

@ -67,7 +67,7 @@ spdk_nvmf_request_complete(struct spdk_nvmf_request *req)
} }
static void static void
nvmf_trace_command(union nvmf_h2c_msg *h2c_msg, enum spdk_nvmf_qpair_type qpair_type) nvmf_trace_command(union nvmf_h2c_msg *h2c_msg, bool is_admin_queue)
{ {
struct spdk_nvmf_capsule_cmd *cap_hdr = &h2c_msg->nvmf_cmd; struct spdk_nvmf_capsule_cmd *cap_hdr = &h2c_msg->nvmf_cmd;
struct spdk_nvme_cmd *cmd = &h2c_msg->nvme_cmd; struct spdk_nvme_cmd *cmd = &h2c_msg->nvme_cmd;
@ -77,12 +77,12 @@ nvmf_trace_command(union nvmf_h2c_msg *h2c_msg, enum spdk_nvmf_qpair_type qpair_
if (cmd->opc == SPDK_NVME_OPC_FABRIC) { if (cmd->opc == SPDK_NVME_OPC_FABRIC) {
opc = cap_hdr->fctype; opc = cap_hdr->fctype;
SPDK_DEBUGLOG(SPDK_LOG_NVMF, "%s Fabrics cmd: fctype 0x%02x cid %u\n", SPDK_DEBUGLOG(SPDK_LOG_NVMF, "%s Fabrics cmd: fctype 0x%02x cid %u\n",
qpair_type == QPAIR_TYPE_AQ ? "Admin" : "I/O", is_admin_queue ? "Admin" : "I/O",
cap_hdr->fctype, cap_hdr->cid); cap_hdr->fctype, cap_hdr->cid);
} else { } else {
opc = cmd->opc; opc = cmd->opc;
SPDK_DEBUGLOG(SPDK_LOG_NVMF, "%s cmd: opc 0x%02x fuse %u cid %u nsid %u cdw10 0x%08x\n", SPDK_DEBUGLOG(SPDK_LOG_NVMF, "%s cmd: opc 0x%02x fuse %u cid %u nsid %u cdw10 0x%08x\n",
qpair_type == QPAIR_TYPE_AQ ? "Admin" : "I/O", is_admin_queue ? "Admin" : "I/O",
cmd->opc, cmd->fuse, cmd->cid, cmd->nsid, cmd->cdw10); cmd->opc, cmd->fuse, cmd->cid, cmd->nsid, cmd->cdw10);
if (cmd->mptr) { if (cmd->mptr) {
SPDK_DEBUGLOG(SPDK_LOG_NVMF, "mptr 0x%" PRIx64 "\n", cmd->mptr); SPDK_DEBUGLOG(SPDK_LOG_NVMF, "mptr 0x%" PRIx64 "\n", cmd->mptr);
@ -116,7 +116,7 @@ spdk_nvmf_request_exec(struct spdk_nvmf_request *req)
struct spdk_nvmf_qpair *qpair = req->qpair; struct spdk_nvmf_qpair *qpair = req->qpair;
spdk_nvmf_request_exec_status status; spdk_nvmf_request_exec_status status;
nvmf_trace_command(req->cmd, qpair->type); nvmf_trace_command(req->cmd, spdk_nvmf_qpair_is_admin_queue(qpair));
/* Check if the subsystem is paused (if there is a subsystem) */ /* Check if the subsystem is paused (if there is a subsystem) */
if (qpair->ctrlr) { if (qpair->ctrlr) {
@ -133,7 +133,7 @@ spdk_nvmf_request_exec(struct spdk_nvmf_request *req)
if (spdk_unlikely(req->cmd->nvmf_cmd.opcode == SPDK_NVME_OPC_FABRIC)) { if (spdk_unlikely(req->cmd->nvmf_cmd.opcode == SPDK_NVME_OPC_FABRIC)) {
status = spdk_nvmf_ctrlr_process_fabrics_cmd(req); status = spdk_nvmf_ctrlr_process_fabrics_cmd(req);
} else if (spdk_unlikely(qpair->type == QPAIR_TYPE_AQ)) { } else if (spdk_unlikely(spdk_nvmf_qpair_is_admin_queue(qpair))) {
status = spdk_nvmf_ctrlr_process_admin_cmd(req); status = spdk_nvmf_ctrlr_process_admin_cmd(req);
} else { } else {
status = spdk_nvmf_ctrlr_process_io_cmd(req); status = spdk_nvmf_ctrlr_process_io_cmd(req);