Commit cb5c6612 authored by Shuhei Matsumoto's avatar Shuhei Matsumoto Committed by Jim Harris
Browse files

nvmf/fc: Move pending_data_buf_queue from fc_conn to fc_poll_group



I/O buffer cache is per transport_poll_group now. Hence moving
pending_data_buf_queue from struct spdk_nvmf_fc_conn to struct
spdk_nvmf_fc_poll_group is reasonable and do it in this patch.

This change is based on RDMA and TCP transport.

Further unification among transports will be done in subsequent
patches.

Signed-off-by: default avatarShuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Change-Id: Ic857046be8da238cb3ff9e89b83cdac5f6349bcf
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/466844


Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
Reviewed-by: default avatarPaul Luse <paul.e.luse@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatarBroadcom SPDK FC-NVMe CI <spdk-ci.pdl@broadcom.com>
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
parent 2ed1b6c2
Loading
Loading
Loading
Loading
+13 −15
Original line number Diff line number Diff line
@@ -1137,7 +1137,7 @@ nvmf_fc_req_in_pending(struct spdk_nvmf_fc_request *fc_req)
{
	struct spdk_nvmf_fc_request *tmp = NULL;

	STAILQ_FOREACH(tmp, &fc_req->fc_conn->pending_data_buf_queue, pending_link) {
	STAILQ_FOREACH(tmp, &fc_req->hwqp->fgroup->pending_data_buf_queue, pending_link) {
		if (tmp == fc_req) {
			return true;
		}
@@ -1258,7 +1258,7 @@ spdk_nvmf_fc_request_abort(struct spdk_nvmf_fc_request *fc_req, bool send_abts,
		SPDK_DEBUGLOG(SPDK_LOG_NVMF_FC, "Abort req when getting buffers.\n");
	} else if (nvmf_fc_req_in_pending(fc_req)) {
		/* Remove from pending */
		STAILQ_REMOVE(&fc_req->fc_conn->pending_data_buf_queue, fc_req,
		STAILQ_REMOVE(&fc_req->hwqp->fgroup->pending_data_buf_queue, fc_req,
			      spdk_nvmf_fc_request, pending_link);
		goto complete;
	} else {
@@ -1454,7 +1454,7 @@ nvmf_fc_hwqp_handle_request(struct spdk_nvmf_fc_hwqp *hwqp, struct spdk_nvmf_fc_

	nvmf_fc_record_req_trace_point(fc_req, SPDK_NVMF_FC_REQ_INIT);
	if (nvmf_fc_request_execute(fc_req)) {
		STAILQ_INSERT_TAIL(&fc_conn->pending_data_buf_queue, fc_req, pending_link);
		STAILQ_INSERT_TAIL(&hwqp->fgroup->pending_data_buf_queue, fc_req, pending_link);
	}

	return 0;
@@ -1626,15 +1626,13 @@ spdk_nvmf_fc_hwqp_process_frame(struct spdk_nvmf_fc_hwqp *hwqp,
void
spdk_nvmf_fc_hwqp_process_pending_reqs(struct spdk_nvmf_fc_hwqp *hwqp)
{
	struct spdk_nvmf_fc_conn *fc_conn = NULL;
	struct spdk_nvmf_fc_request *fc_req = NULL, *tmp;
	int budget = 64;

	TAILQ_FOREACH(fc_conn, &hwqp->connection_list, link) {
		STAILQ_FOREACH_SAFE(fc_req, &fc_conn->pending_data_buf_queue, pending_link, tmp) {
	STAILQ_FOREACH_SAFE(fc_req, &hwqp->fgroup->pending_data_buf_queue, pending_link, tmp) {
		if (!nvmf_fc_request_execute(fc_req)) {
			/* Succesfuly posted, Delete from pending. */
				STAILQ_REMOVE_HEAD(&fc_conn->pending_data_buf_queue, pending_link);
			STAILQ_REMOVE_HEAD(&hwqp->fgroup->pending_data_buf_queue, pending_link);
		}

		if (budget) {
@@ -1644,7 +1642,6 @@ spdk_nvmf_fc_hwqp_process_pending_reqs(struct spdk_nvmf_fc_hwqp *hwqp)
		}
	}
}
}

void
spdk_nvmf_fc_hwqp_process_pending_ls_rqsts(struct spdk_nvmf_fc_hwqp *hwqp)
@@ -2002,6 +1999,7 @@ nvmf_fc_poll_group_create(struct spdk_nvmf_transport *transport)
	}

	TAILQ_INIT(&fgroup->hwqp_list);
	STAILQ_INIT(&fgroup->pending_data_buf_queue);

	pthread_mutex_lock(&ftransport->lock);
	TAILQ_INSERT_TAIL(&g_nvmf_fgroups, fgroup, link);
+0 −1
Original line number Diff line number Diff line
@@ -357,7 +357,6 @@ nvmf_fc_ls_new_connection(struct spdk_nvmf_fc_association *assoc, uint16_t qid,
	 */
	spdk_nvmf_fc_create_trid(&fc_conn->trid, tgtport->fc_nodename.u.wwn,
				 tgtport->fc_portname.u.wwn);
	STAILQ_INIT(&fc_conn->pending_data_buf_queue);

	return fc_conn;
}
+2 −3
Original line number Diff line number Diff line
@@ -226,9 +226,6 @@ struct spdk_nvmf_fc_conn {
	/* number of read/write requests that are outstanding */
	uint16_t cur_fc_rw_depth;

	/* requests that are waiting to obtain xchg/buffer */
	STAILQ_HEAD(, spdk_nvmf_fc_request) pending_data_buf_queue;

	struct spdk_nvmf_fc_association *fc_assoc;

	uint16_t rpi;
@@ -267,6 +264,8 @@ struct spdk_nvmf_fc_poll_group {
	struct spdk_nvmf_tgt *nvmf_tgt;
	uint32_t hwqp_count; /* number of hwqp's assigned to this pg */
	TAILQ_HEAD(, spdk_nvmf_fc_hwqp) hwqp_list;
	/* requests that are waiting to obtain xchg/buffer */
	STAILQ_HEAD(, spdk_nvmf_fc_request) pending_data_buf_queue;

	TAILQ_ENTRY(spdk_nvmf_fc_poll_group) link;
};