IB/iser: DMA unmap TX bufs used for iSCSI/iSER headers
The current driver never does DMA unmapping on these buffers. Fix that by adding DMA unmapping to the task cleanup callback, and DMA mapping to the task init function (drop the headers_initialized micro-optimization). Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com> Signed-off-by: Roland Dreier <roland@purestorage.com>
This commit is contained in:
parent
2c4ce60934
commit
52439540ea
|
@ -151,7 +151,6 @@ int iser_initialize_task_headers(struct iscsi_task *task,
|
|||
tx_desc->tx_sg[0].length = ISER_HEADERS_LEN;
|
||||
tx_desc->tx_sg[0].lkey = device->mr->lkey;
|
||||
|
||||
iser_task->headers_initialized = 1;
|
||||
iser_task->iser_conn = iser_conn;
|
||||
return 0;
|
||||
}
|
||||
|
@ -166,8 +165,7 @@ iscsi_iser_task_init(struct iscsi_task *task)
|
|||
{
|
||||
struct iscsi_iser_task *iser_task = task->dd_data;
|
||||
|
||||
if (!iser_task->headers_initialized)
|
||||
if (iser_initialize_task_headers(task, &iser_task->desc))
|
||||
if (iser_initialize_task_headers(task, &iser_task->desc))
|
||||
return -ENOMEM;
|
||||
|
||||
/* mgmt task */
|
||||
|
@ -278,6 +276,13 @@ iscsi_iser_task_xmit(struct iscsi_task *task)
|
|||
static void iscsi_iser_cleanup_task(struct iscsi_task *task)
|
||||
{
|
||||
struct iscsi_iser_task *iser_task = task->dd_data;
|
||||
struct iser_tx_desc *tx_desc = &iser_task->desc;
|
||||
|
||||
struct iscsi_iser_conn *iser_conn = task->conn->dd_data;
|
||||
struct iser_device *device = iser_conn->ib_conn->device;
|
||||
|
||||
ib_dma_unmap_single(device->ib_device,
|
||||
tx_desc->dma_addr, ISER_HEADERS_LEN, DMA_TO_DEVICE);
|
||||
|
||||
/* mgmt tasks do not need special cleanup */
|
||||
if (!task->sc)
|
||||
|
|
|
@ -278,7 +278,6 @@ struct iscsi_iser_task {
|
|||
struct iser_regd_buf rdma_regd[ISER_DIRS_NUM];/* regd rdma buf */
|
||||
struct iser_data_buf data[ISER_DIRS_NUM]; /* orig. data des*/
|
||||
struct iser_data_buf data_copy[ISER_DIRS_NUM];/* contig. copy */
|
||||
int headers_initialized;
|
||||
};
|
||||
|
||||
struct iser_page_vec {
|
||||
|
|
Loading…
Reference in New Issue