diff --git a/lib/iscsi/iscsi.c b/lib/iscsi/iscsi.c index 525992b7e..118e180e4 100644 --- a/lib/iscsi/iscsi.c +++ b/lib/iscsi/iscsi.c @@ -4574,7 +4574,7 @@ iscsi_pdu_payload_read(struct spdk_iscsi_conn *conn, struct spdk_iscsi_pdu *pdu) data_len, SPDK_ISCSI_MAX_RECV_DATA_SEGMENT_LENGTH); return -1; } - pdu->mobj = spdk_mempool_get(pool); + pdu->mobj = iscsi_datapool_get(pool); if (pdu->mobj == NULL) { return 1; } diff --git a/lib/iscsi/iscsi.h b/lib/iscsi/iscsi.h index 88a2e9f21..3d379bf30 100644 --- a/lib/iscsi/iscsi.h +++ b/lib/iscsi/iscsi.h @@ -36,7 +36,7 @@ #define SPDK_ISCSI_H #include "spdk/stdinc.h" - +#include "spdk/env.h" #include "spdk/bdev.h" #include "spdk/iscsi_spec.h" #include "spdk/thread.h" @@ -454,6 +454,20 @@ void iscsi_op_abort_task_set(struct spdk_iscsi_task *task, uint8_t function); void iscsi_queue_task(struct spdk_iscsi_conn *conn, struct spdk_iscsi_task *task); +static inline struct spdk_mobj * +iscsi_datapool_get(struct spdk_mempool *pool) +{ + return spdk_mempool_get(pool); +} + +static inline void +iscsi_datapool_put(struct spdk_mobj *mobj) +{ + assert(mobj != NULL); + + spdk_mempool_put(mobj->mp, (void *)mobj); +} + static inline uint32_t iscsi_get_max_immediate_data_size(void) { diff --git a/lib/iscsi/iscsi_subsystem.c b/lib/iscsi/iscsi_subsystem.c index dbec73424..0f1371e6c 100644 --- a/lib/iscsi/iscsi_subsystem.c +++ b/lib/iscsi/iscsi_subsystem.c @@ -32,10 +32,7 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include "spdk/stdinc.h" -#include "spdk/env.h" #include "spdk/string.h" -#include "spdk/sock.h" #include "spdk/likely.h" #include "iscsi/iscsi.h" @@ -233,8 +230,9 @@ void iscsi_put_pdu(struct spdk_iscsi_pdu *pdu) pdu->ref--; if (pdu->ref == 0) { + if (pdu->mobj) { - spdk_mempool_put(pdu->mobj->mp, (void *)pdu->mobj); + iscsi_datapool_put(pdu->mobj); } if (pdu->data && !pdu->data_from_mempool) {