diff --git a/lib/nvme/nvme_tcp.c b/lib/nvme/nvme_tcp.c index 865e3ea88..e0bd16b46 100644 --- a/lib/nvme/nvme_tcp.c +++ b/lib/nvme/nvme_tcp.c @@ -110,6 +110,8 @@ struct nvme_tcp_qpair { TAILQ_ENTRY(nvme_tcp_qpair) link; bool needs_poll; + + uint64_t icreq_timeout_tsc; }; enum nvme_tcp_req_state { @@ -1793,7 +1795,6 @@ nvme_tcp_qpair_icreq_send(struct nvme_tcp_qpair *tqpair) { struct spdk_nvme_tcp_ic_req *ic_req; struct nvme_tcp_pdu *pdu; - uint64_t icreq_timeout_tsc; int rc; pdu = tqpair->send_pdu; @@ -1811,7 +1812,7 @@ nvme_tcp_qpair_icreq_send(struct nvme_tcp_qpair *tqpair) nvme_tcp_qpair_write_pdu(tqpair, pdu, nvme_tcp_send_icreq_complete, tqpair); - icreq_timeout_tsc = spdk_get_ticks() + (NVME_TCP_TIME_OUT_IN_SECONDS * spdk_get_ticks_hz()); + tqpair->icreq_timeout_tsc = spdk_get_ticks() + (NVME_TCP_TIME_OUT_IN_SECONDS * spdk_get_ticks_hz()); do { if (tqpair->qpair.poll_group) { rc = (int)nvme_tcp_poll_group_process_completions(tqpair->qpair.poll_group, 0, @@ -1820,7 +1821,7 @@ nvme_tcp_qpair_icreq_send(struct nvme_tcp_qpair *tqpair) rc = nvme_tcp_qpair_process_completions(&tqpair->qpair, 0); } } while ((tqpair->state != NVME_TCP_QPAIR_STATE_RUNNING) && - (rc >= 0) && (spdk_get_ticks() <= icreq_timeout_tsc)); + (rc >= 0) && (spdk_get_ticks() <= tqpair->icreq_timeout_tsc)); if (tqpair->state != NVME_TCP_QPAIR_STATE_RUNNING) { SPDK_ERRLOG("Failed to construct the tqpair=%p via correct icresp\n", tqpair);