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

nvmf/fc: Check if buffer came from pool prior to nvmf_fc_request_free_buffers()



NVMe-oF FC transport have used its own buffer pool and have not used
common buffer pool yet.

It looks that there is no particular reason to prevent FC transport
from using the common buffer pool.

This patch extract checking fc_req->data_from_pool from
nvmf_fc_request_free_buffers() to make the transition easier.

fc_req->req.iovcnt and fc_req->req.data should be cleared regardless
of fc_req->data_from_pool. Hence extract them into callees.

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


Reviewed-by: default avatarBroadcom SPDK FC-NVMe CI <spdk-ci.pdl@broadcom.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
parent cbd35000
Loading
Loading
Loading
Loading
+14 −11
Original line number Diff line number Diff line
@@ -419,8 +419,9 @@ nvmf_fc_req_in_get_buff(struct spdk_nvmf_fc_request *fc_req)
static void
nvmf_fc_request_free_buffers(struct spdk_nvmf_fc_request *fc_req)
{
	if (fc_req->data_from_pool) {
		for (uint32_t i = 0; i < fc_req->req.iovcnt; i++) {
	uint32_t i;

	for (i = 0; i < fc_req->req.iovcnt; i++) {
		spdk_mempool_put(fc_req->hwqp->fc_poll_group->fc_transport->data_buff_pool,
				 fc_req->buffers[i]);
		fc_req->req.iov[i].iov_base = NULL;
@@ -428,9 +429,6 @@ nvmf_fc_request_free_buffers(struct spdk_nvmf_fc_request *fc_req)
	}
	fc_req->data_from_pool = false;
}
	fc_req->req.data = NULL;
	fc_req->req.iovcnt  = 0;
}

void
spdk_nvmf_fc_init_poller_queues(struct spdk_nvmf_fc_hwqp *hwqp)
@@ -1320,6 +1318,7 @@ nvmf_fc_request_alloc_buffers(struct spdk_nvmf_fc_request *fc_req)

nomem:
	nvmf_fc_request_free_buffers(fc_req);
	fc_req->req.iovcnt  = 0;
	return -ENOMEM;
}

@@ -1486,7 +1485,11 @@ spdk_nvmf_fc_request_free(struct spdk_nvmf_fc_request *fc_req)
	}

	/* Release IO buffers */
	if (fc_req->data_from_pool) {
		nvmf_fc_request_free_buffers(fc_req);
	}
	fc_req->req.data = NULL;
	fc_req->req.iovcnt  = 0;

	/* Release Q buffer */
	nvmf_fc_rqpair_buffer_release(fc_req->hwqp, fc_req->buf_index);