Commit 10fbe570 authored by Aleksey Marchuk's avatar Aleksey Marchuk Committed by Tomasz Zawadzki
Browse files

nvmf/rdma: Add HAVE_BUFFER request state.



A preparation to use iobuf-based requests queueing, introduce a new
state like it is done for TCP transport

Change-Id: I8f22eceeedbb41a11f431aacab4f0a5586a75da9
Signed-off-by: default avatarAleksey Marchuk <alexeymar@nvidia.com>
Reviewed-on: https://review.spdk.io/c/spdk/spdk/+/26652


Reviewed-by: default avatarKrzysztof Goreczny <krzysztof.goreczny@dell.com>
Reviewed-by: default avatarJim Harris <jim.harris@nvidia.com>
Reviewed-by: default avatarKonrad Sztyber <ksztyber@nvidia.com>
Community-CI: Mellanox Build Bot
Tested-by: default avatarSPDK Automated Test System <spdkbot@gmail.com>
parent 135e8baa
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -102,6 +102,7 @@
#define TRACE_RDMA_QP_DISCONNECT					SPDK_TPOINT_ID(TRACE_GROUP_NVMF_RDMA, 0x10)
#define TRACE_RDMA_QP_DESTROY						SPDK_TPOINT_ID(TRACE_GROUP_NVMF_RDMA, 0x11)
#define TRACE_RDMA_REQUEST_STATE_READY_TO_COMPLETE_PENDING		SPDK_TPOINT_ID(TRACE_GROUP_NVMF_RDMA, 0x12)
#define TRACE_RDMA_REQUEST_STATE_HAVE_BUFFER				SPDK_TPOINT_ID(TRACE_GROUP_NVMF_RDMA, 0x13)

/* Thread tracepoint definitions */
#define TRACE_THREAD_IOCH_GET		SPDK_TPOINT_ID(TRACE_GROUP_THREAD, 0x0)
+11 −0
Original line number Diff line number Diff line
@@ -55,6 +55,9 @@ enum spdk_nvmf_rdma_request_state {
	/* The request is queued until a data buffer is available. */
	RDMA_REQUEST_STATE_NEED_BUFFER,

	/* The request has a data buffer available. */
	RDMA_REQUEST_STATE_HAVE_BUFFER,

	/* The request is waiting on RDMA queue depth availability
	 * to transfer data from the host to the controller.
	 */
@@ -128,6 +131,9 @@ nvmf_trace(void)
	spdk_trace_register_description("RDMA_REQ_NEED_BUFFER", TRACE_RDMA_REQUEST_STATE_NEED_BUFFER,
					OWNER_TYPE_NONE, OBJECT_NVMF_RDMA_IO, 0,
					SPDK_TRACE_ARG_TYPE_PTR, "qpair");
	spdk_trace_register_description("RDMA_REQ_HAVE_BUFFER", TRACE_RDMA_REQUEST_STATE_HAVE_BUFFER,
					OWNER_TYPE_NONE, OBJECT_NVMF_RDMA_IO, 0,
					SPDK_TRACE_ARG_TYPE_PTR, "qpair");
	spdk_trace_register_description("RDMA_REQ_TX_PENDING_C2H",
					TRACE_RDMA_REQUEST_STATE_DATA_TRANSFER_TO_HOST_PENDING,
					OWNER_TYPE_NONE, OBJECT_NVMF_RDMA_IO, 0,
@@ -2268,6 +2274,11 @@ nvmf_rdma_request_process(struct spdk_nvmf_rdma_transport *rtransport,
			}

			STAILQ_REMOVE_HEAD(&rgroup->group.pending_buf_queue, buf_link);
			rdma_req->state = RDMA_REQUEST_STATE_HAVE_BUFFER;
			break;
		case RDMA_REQUEST_STATE_HAVE_BUFFER:
			spdk_trace_record(TRACE_RDMA_REQUEST_STATE_HAVE_BUFFER, 0, 0,
					  (uintptr_t)rdma_req, (uintptr_t)rqpair);

			/* If data is transferring from host to controller and the data didn't
			 * arrive using in capsule data, we need to do a transfer from the host.