From f02e2328aef4d04605c2fcf7c3a46c60ec64c9a7 Mon Sep 17 00:00:00 2001 From: Jim Harris Date: Fri, 28 May 2021 16:47:16 +0000 Subject: [PATCH] nvme: save icreq_timeout in tcp qpair Needed to make this code path asynchronous. Signed-off-by: Jim Harris Change-Id: I6b18d4e9fc1a29b30c78f7f087b80913d00f9726 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/8598 Community-CI: Broadcom CI Community-CI: Mellanox Build Bot Tested-by: SPDK CI Jenkins Reviewed-by: Ben Walker Reviewed-by: Aleksey Marchuk Reviewed-by: Krzysztof Karas --- lib/nvme/nvme_tcp.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) 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);