diff --git a/lib/nvme/nvme_pcie.c b/lib/nvme/nvme_pcie.c index 37521f3e0..de6bef634 100644 --- a/lib/nvme/nvme_pcie.c +++ b/lib/nvme/nvme_pcie.c @@ -160,6 +160,7 @@ struct nvme_pcie_qpair { uint16_t sq_tail; uint16_t cq_head; + uint16_t sq_head; uint8_t phase; @@ -1096,6 +1097,10 @@ nvme_pcie_qpair_submit_tracker(struct spdk_nvme_qpair *qpair, struct nvme_tracke pqpair->sq_tail = 0; } + if (pqpair->sq_tail == pqpair->sq_head) { + SPDK_ERRLOG("sq_tail is passing sq_head!\n"); + } + spdk_wmb(); g_thread_mmio_ctrlr = pctrlr; if (spdk_likely(nvme_pcie_qpair_update_mmio_required(qpair, @@ -1981,6 +1986,7 @@ nvme_pcie_qpair_process_completions(struct spdk_nvme_qpair *qpair, uint32_t max_ #endif tr = &pqpair->tr[cpl->cid]; + pqpair->sq_head = cpl->sqhd; if (tr->active) { nvme_pcie_qpair_complete_tracker(qpair, tr, cpl, true);