nvme: Eliminate tracker's active flag
The same information can be obtained by checking the req field for NULL. Change-Id: I9689ee0be33537fd6d3f35d8c3710fabab5e1928 Signed-off-by: Ben Walker <benjamin.walker@intel.com> Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/450557 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
This commit is contained in:
parent
4b8405685a
commit
f7d3dd9bd6
@ -114,8 +114,7 @@ struct nvme_tracker {
|
|||||||
struct nvme_request *req;
|
struct nvme_request *req;
|
||||||
uint16_t cid;
|
uint16_t cid;
|
||||||
|
|
||||||
uint16_t rsvd1: 15;
|
uint16_t rsvd1;
|
||||||
uint16_t active: 1;
|
|
||||||
|
|
||||||
uint32_t rsvd2;
|
uint32_t rsvd2;
|
||||||
|
|
||||||
@ -935,7 +934,7 @@ nvme_qpair_construct_tracker(struct nvme_tracker *tr, uint16_t cid, uint64_t phy
|
|||||||
{
|
{
|
||||||
tr->prp_sgl_bus_addr = phys_addr + offsetof(struct nvme_tracker, u.prp);
|
tr->prp_sgl_bus_addr = phys_addr + offsetof(struct nvme_tracker, u.prp);
|
||||||
tr->cid = cid;
|
tr->cid = cid;
|
||||||
tr->active = false;
|
tr->req = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
@ -1238,8 +1237,6 @@ nvme_pcie_qpair_submit_tracker(struct spdk_nvme_qpair *qpair, struct nvme_tracke
|
|||||||
req = tr->req;
|
req = tr->req;
|
||||||
assert(req != NULL);
|
assert(req != NULL);
|
||||||
|
|
||||||
tr->active = true;
|
|
||||||
|
|
||||||
/* Copy the command from the tracker to the submission queue. */
|
/* Copy the command from the tracker to the submission queue. */
|
||||||
nvme_pcie_copy_command(&pqpair->cmd[pqpair->sq_tail], &req->cmd);
|
nvme_pcie_copy_command(&pqpair->cmd[pqpair->sq_tail], &req->cmd);
|
||||||
|
|
||||||
@ -1262,7 +1259,7 @@ nvme_pcie_qpair_complete_tracker(struct spdk_nvme_qpair *qpair, struct nvme_trac
|
|||||||
{
|
{
|
||||||
struct nvme_pcie_qpair *pqpair = nvme_pcie_qpair(qpair);
|
struct nvme_pcie_qpair *pqpair = nvme_pcie_qpair(qpair);
|
||||||
struct nvme_request *req;
|
struct nvme_request *req;
|
||||||
bool retry, error, was_active;
|
bool retry, error;
|
||||||
bool req_from_current_proc = true;
|
bool req_from_current_proc = true;
|
||||||
|
|
||||||
req = tr->req;
|
req = tr->req;
|
||||||
@ -1278,23 +1275,18 @@ nvme_pcie_qpair_complete_tracker(struct spdk_nvme_qpair *qpair, struct nvme_trac
|
|||||||
nvme_qpair_print_completion(qpair, cpl);
|
nvme_qpair_print_completion(qpair, cpl);
|
||||||
}
|
}
|
||||||
|
|
||||||
was_active = tr->active;
|
|
||||||
tr->active = false;
|
|
||||||
|
|
||||||
assert(cpl->cid == req->cmd.cid);
|
assert(cpl->cid == req->cmd.cid);
|
||||||
|
|
||||||
if (retry) {
|
if (retry) {
|
||||||
req->retries++;
|
req->retries++;
|
||||||
nvme_pcie_qpair_submit_tracker(qpair, tr);
|
nvme_pcie_qpair_submit_tracker(qpair, tr);
|
||||||
} else {
|
} else {
|
||||||
if (was_active) {
|
/* Only check admin requests from different processes. */
|
||||||
/* Only check admin requests from different processes. */
|
if (nvme_qpair_is_admin_queue(qpair) && req->pid != getpid()) {
|
||||||
if (nvme_qpair_is_admin_queue(qpair) && req->pid != getpid()) {
|
req_from_current_proc = false;
|
||||||
req_from_current_proc = false;
|
nvme_pcie_qpair_insert_pending_admin_request(qpair, req, cpl);
|
||||||
nvme_pcie_qpair_insert_pending_admin_request(qpair, req, cpl);
|
} else {
|
||||||
} else {
|
nvme_complete_request(req, cpl);
|
||||||
nvme_complete_request(req, cpl);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (req_from_current_proc == true) {
|
if (req_from_current_proc == true) {
|
||||||
@ -2148,7 +2140,7 @@ nvme_pcie_qpair_process_completions(struct spdk_nvme_qpair *qpair, uint32_t max_
|
|||||||
tr = &pqpair->tr[cpl->cid];
|
tr = &pqpair->tr[cpl->cid];
|
||||||
pqpair->sq_head = cpl->sqhd;
|
pqpair->sq_head = cpl->sqhd;
|
||||||
|
|
||||||
if (tr->active) {
|
if (tr->req) {
|
||||||
nvme_pcie_qpair_complete_tracker(qpair, tr, cpl, true);
|
nvme_pcie_qpair_complete_tracker(qpair, tr, cpl, true);
|
||||||
} else {
|
} else {
|
||||||
SPDK_ERRLOG("cpl does not map to outstanding cmd\n");
|
SPDK_ERRLOG("cpl does not map to outstanding cmd\n");
|
||||||
|
Loading…
Reference in New Issue
Block a user