Merged revisions 5838, 5840, 5841 from iser branch

r5838
isert: Make sure we do dma_unmap on RDMA memory upon flushes

r5840
isert: Raise the number of concurrent login requests we can handle to 127
Also update documentation to reflect current limitations

r5841
isert: Fix small memory leak on module unload



git-svn-id: http://svn.code.sf.net/p/scst/svn/branches/3.0.x-iser@5843 d57e44dd-8a1f-0410-8b47-8ef2f437770f
This commit is contained in:
Yan Burman
2014-10-13 12:43:39 +00:00
parent 457dfaaf3e
commit b5fa12fd0d
3 changed files with 24 additions and 1 deletions

View File

@@ -15,6 +15,14 @@ In order to achieve better performance, it is recommended to specify
"QueuedCommands 128" parameter per iSER target, since the transport
is very fast and you usually want to connect it to fast backstorage.
Limitations:
-------------
* Bidirectional commands are not supported
* Block size over 512KB is not supported
* Maximum number of concurent login requests that can be handled is 127.
Note that there may be more connections, but only up to 127 login requests
can be handled at the same time.
Troubleshooting:
-----------------

View File

@@ -521,6 +521,9 @@ static void isert_handle_wc_error(struct ib_wc *wc)
struct isert_wr *wr = _u64_to_ptr(wc->wr_id);
struct isert_cmnd *isert_pdu = wr->pdu;
struct isert_connection *isert_conn = wr->conn;
struct isert_buf *isert_buf = wr->buf;
struct isert_device *isert_dev = wr->isert_dev;
struct ib_device *ib_dev = isert_dev->ib_dev;
TRACE_ENTRY();
@@ -538,11 +541,22 @@ static void isert_handle_wc_error(struct ib_wc *wc)
}
break;
case ISER_WR_RDMA_READ:
if (isert_buf->sg_cnt != 0) {
isert_buf->sg_cnt = 0;
ib_dma_unmap_sg(ib_dev, isert_buf->sg, isert_buf->sg_cnt,
isert_buf->dma_dir);
}
isert_pdu_err(&isert_pdu->iscsi);
break;
case ISER_WR_RECV:
/* this should be the Flush, no task has been created yet */
break;
case ISER_WR_RDMA_WRITE:
if (isert_buf->sg_cnt != 0) {
isert_buf->sg_cnt = 0;
ib_dma_unmap_sg(ib_dev, isert_buf->sg, isert_buf->sg_cnt,
isert_buf->dma_dir);
}
/* RDMA-WR and SEND response of a READ task
are sent together, so when receiving RDMA-WR error,
wait until SEND error arrives to complete the task */
@@ -1592,6 +1606,7 @@ void isert_portal_release(struct isert_portal *portal)
isert_portal_list_remove(portal);
kfree(portal);
module_put(THIS_MODULE);
}

View File

@@ -65,7 +65,7 @@
struct iscsi_conn;
#define ISERT_NR_DEVS 64
#define ISERT_NR_DEVS 128
struct isert_listener_dev {
struct device *dev;