diff --git a/lib/nvme/nvme_internal.h b/lib/nvme/nvme_internal.h index 267764983..9262dcd1b 100644 --- a/lib/nvme/nvme_internal.h +++ b/lib/nvme/nvme_internal.h @@ -960,6 +960,15 @@ nvme_free_request(struct nvme_request *req) STAILQ_INSERT_HEAD(&req->qpair->free_req, req, stailq); } +static inline void +nvme_qpair_free_request(struct spdk_nvme_qpair *qpair, struct nvme_request *req) +{ + assert(req != NULL); + assert(req->num_children == 0); + + STAILQ_INSERT_HEAD(&qpair->free_req, req, stailq); +} + void nvme_request_remove_child(struct nvme_request *parent, struct nvme_request *child); int nvme_request_check_timeout(struct nvme_request *req, uint16_t cid, struct spdk_nvme_ctrlr_process *active_proc, uint64_t now_tick); diff --git a/lib/nvme/nvme_pcie.c b/lib/nvme/nvme_pcie.c index d6c16ba71..1d89cbb95 100644 --- a/lib/nvme/nvme_pcie.c +++ b/lib/nvme/nvme_pcie.c @@ -1316,7 +1316,7 @@ nvme_pcie_qpair_complete_tracker(struct spdk_nvme_qpair *qpair, struct nvme_trac } if (req_from_current_proc == true) { - nvme_free_request(req); + nvme_qpair_free_request(qpair, req); } tr->req = NULL;