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: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Change-Id: I36420f0e573d1ec3f9f3a75f6b2ced82ade89dd3 Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/465864 Reviewed-by: Broadcom SPDK FC-NVMe CI <spdk-ci.pdl@broadcom.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
This commit is contained in:
parent
cbd3500019
commit
cdf80adccc
@ -419,17 +419,15 @@ 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++) {
|
||||
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;
|
||||
fc_req->buffers[i] = NULL;
|
||||
}
|
||||
fc_req->data_from_pool = false;
|
||||
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;
|
||||
fc_req->buffers[i] = NULL;
|
||||
}
|
||||
fc_req->req.data = NULL;
|
||||
fc_req->req.iovcnt = 0;
|
||||
fc_req->data_from_pool = false;
|
||||
}
|
||||
|
||||
void
|
||||
@ -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 */
|
||||
nvmf_fc_request_free_buffers(fc_req);
|
||||
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);
|
||||
|
Loading…
Reference in New Issue
Block a user