Commit 3e1a251e authored by Ben Walker's avatar Ben Walker
Browse files

nvmf: Track outstanding I/O for debug purposes



Track and print out the currently outstanding I/O in debug
mode with rdma tracing enabled.

Change-Id: I0a1f0cd6e22dbf21e18ca0ec7d0c2c6d194509e3
Signed-off-by: default avatarBen Walker <benjamin.walker@intel.com>
parent c6a60876
Loading
Loading
Loading
Loading
+12 −6
Original line number Diff line number Diff line
@@ -77,6 +77,7 @@ struct spdk_nvmf_rdma_conn {
	uint16_t				queue_depth;

	STAILQ_HEAD(, spdk_nvmf_rdma_request)	rdma_reqs;
	int					outstanding_reqs;

	TAILQ_ENTRY(spdk_nvmf_rdma_conn)	link;
};
@@ -1090,8 +1091,11 @@ spdk_nvmf_rdma_poll(struct spdk_nvmf_conn *conn)

		switch (wc.opcode) {
		case IBV_WC_SEND:
			SPDK_TRACELOG(SPDK_TRACE_RDMA, "RDMA SEND Complete. Request: %p Connection: %p\n",
				      req, conn);
			assert(rdma_conn->outstanding_reqs > 0);
			rdma_conn->outstanding_reqs--;
			SPDK_TRACELOG(SPDK_TRACE_RDMA,
				      "RDMA SEND Complete. Request: %p Connection: %p Outstanding I/O: %d\n",
				      req, conn, rdma_conn->outstanding_reqs);
			if (spdk_nvmf_rdma_request_release(conn, req)) {
				return -1;
			}
@@ -1120,10 +1124,6 @@ spdk_nvmf_rdma_poll(struct spdk_nvmf_conn *conn)
			break;

		case IBV_WC_RECV:
			SPDK_TRACELOG(SPDK_TRACE_RDMA, "RDMA RECV Complete. Request: %p Connection: %p\n",
				      req, conn);
			spdk_trace_record(TRACE_NVMF_IO_START, 0, 0, (uint64_t)req, 0);

			if (wc.byte_len < sizeof(struct spdk_nvmf_capsule_cmd)) {
				SPDK_ERRLOG("recv length %u less than capsule header\n", wc.byte_len);
				return -1;
@@ -1142,6 +1142,12 @@ spdk_nvmf_rdma_poll(struct spdk_nvmf_conn *conn)

			}

			rdma_conn->outstanding_reqs++;
			SPDK_TRACELOG(SPDK_TRACE_RDMA,
				      "RDMA RECV Complete. Request: %p Connection: %p Outstanding I/O: %d\n",
				      req, conn, rdma_conn->outstanding_reqs);
			spdk_trace_record(TRACE_NVMF_IO_START, 0, 0, (uint64_t)req, 0);

			memset(req->rsp, 0, sizeof(*req->rsp));
			rc = spdk_nvmf_request_prep_data(req,
							 rdma_req->bb_mr->addr,