nvmf: move outstandling req list in spdk_nvmf_qpair
Purpose: To make the reqs recycle more flexible. Change-Id: Ied37397a10dada22a7aee6bb5a316da6a0583073 Signed-off-by: Ziye Yang <optimistyzy@gmail.com> Reviewed-on: https://review.gerrithub.io/410866 Tested-by: SPDK Automated Test System <sys_sgsw@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
This commit is contained in:
parent
943c7c69c3
commit
582d8f86a2
@ -383,6 +383,7 @@ spdk_nvmf_poll_group_add(struct spdk_nvmf_poll_group *group,
|
||||
int rc = -1;
|
||||
struct spdk_nvmf_transport_poll_group *tgroup;
|
||||
|
||||
TAILQ_INIT(&qpair->outstanding);
|
||||
qpair->group = group;
|
||||
|
||||
TAILQ_FOREACH(tgroup, &group->tgroups, link) {
|
||||
@ -549,7 +550,6 @@ spdk_nvmf_poll_group_add_subsystem(struct spdk_nvmf_poll_group *group,
|
||||
sgroup = &group->sgroups[subsystem->id];
|
||||
sgroup->state = SPDK_NVMF_SUBSYSTEM_ACTIVE;
|
||||
TAILQ_INIT(&sgroup->queued);
|
||||
TAILQ_INIT(&sgroup->outstanding);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -92,7 +92,6 @@ struct spdk_nvmf_subsystem_poll_group {
|
||||
enum spdk_nvmf_subsystem_state state;
|
||||
|
||||
TAILQ_HEAD(, spdk_nvmf_request) queued;
|
||||
TAILQ_HEAD(, spdk_nvmf_request) outstanding;
|
||||
};
|
||||
|
||||
struct spdk_nvmf_poll_group {
|
||||
@ -154,6 +153,7 @@ struct spdk_nvmf_qpair {
|
||||
uint16_t sq_head;
|
||||
uint16_t sq_head_max;
|
||||
|
||||
TAILQ_HEAD(, spdk_nvmf_request) outstanding;
|
||||
TAILQ_ENTRY(spdk_nvmf_qpair) link;
|
||||
};
|
||||
|
||||
|
@ -49,7 +49,6 @@ int
|
||||
spdk_nvmf_request_complete(struct spdk_nvmf_request *req)
|
||||
{
|
||||
struct spdk_nvme_cpl *rsp = &req->rsp->nvme_cpl;
|
||||
struct spdk_nvmf_capsule_cmd *cap_hdr;
|
||||
|
||||
rsp->sqid = 0;
|
||||
rsp->status.p = 0;
|
||||
@ -60,18 +59,7 @@ spdk_nvmf_request_complete(struct spdk_nvmf_request *req)
|
||||
rsp->cid, rsp->cdw0, rsp->rsvd1,
|
||||
*(uint16_t *)&rsp->status);
|
||||
|
||||
cap_hdr = &req->cmd->nvmf_cmd;
|
||||
|
||||
if (spdk_unlikely(req->cmd->nvmf_cmd.opcode == SPDK_NVME_OPC_FABRIC &&
|
||||
cap_hdr->fctype == SPDK_NVMF_FABRIC_COMMAND_CONNECT)) {
|
||||
/* CONNECT commands don't actually get placed on the outstanding list. */
|
||||
} else {
|
||||
struct spdk_nvmf_subsystem_poll_group *sgroup;
|
||||
|
||||
sgroup = &req->qpair->group->sgroups[req->qpair->ctrlr->subsys->id];
|
||||
TAILQ_REMOVE(&sgroup->outstanding, req, link);
|
||||
}
|
||||
|
||||
TAILQ_REMOVE(&req->qpair->outstanding, req, link);
|
||||
if (spdk_nvmf_transport_req_complete(req)) {
|
||||
SPDK_ERRLOG("Transport request completion error!\n");
|
||||
}
|
||||
@ -140,10 +128,11 @@ spdk_nvmf_request_exec(struct spdk_nvmf_request *req)
|
||||
return;
|
||||
}
|
||||
|
||||
/* Place the request on the outstanding list so we can keep track of it */
|
||||
TAILQ_INSERT_TAIL(&sgroup->outstanding, req, link);
|
||||
}
|
||||
|
||||
/* Place the request on the outstanding list so we can keep track of it */
|
||||
TAILQ_INSERT_TAIL(&qpair->outstanding, req, link);
|
||||
|
||||
if (spdk_unlikely(req->cmd->nvmf_cmd.opcode == SPDK_NVME_OPC_FABRIC)) {
|
||||
status = spdk_nvmf_ctrlr_process_fabrics_cmd(req);
|
||||
} else if (spdk_unlikely(spdk_nvmf_qpair_is_admin_queue(qpair))) {
|
||||
|
Loading…
Reference in New Issue
Block a user