aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/infiniband
diff options
context:
space:
mode:
authorNicholas Bellinger <nab@daterainc.com>2013-08-17 17:27:56 -0400
committerNicholas Bellinger <nab@linux-iscsi.org>2013-09-09 17:29:21 -0400
commitd703ce2f7f4de20c03d71c22a9d5e3708798047b (patch)
treef06be5be02dc43ae0a7c34eacd986238005a003b /drivers/infiniband
parent3aee26b4ae91048c933dc622f00b7bb01f7f0ff1 (diff)
iscsi/iser-target: Convert to command priv_size usage
This command converts iscsi/isert-target to use allocations based on iscsit_transport->priv_size within iscsit_allocate_cmd(), instead of using an embedded isert_cmd->iscsi_cmd. This includes removing iscsit_transport->alloc_cmd() usage, along with updating isert-target code to use iscsit_priv_cmd(). Also, remove left-over iscsit_transport->release_cmd() usage for direct calls to iscsit_release_cmd(), and drop the now unused lio_cmd_cache and isert_cmd_cache. Cc: Or Gerlitz <ogerlitz@mellanox.com> Cc: Kent Overstreet <kmo@daterainc.com> Signed-off-by: Nicholas Bellinger <nab@daterainc.com>
Diffstat (limited to 'drivers/infiniband')
-rw-r--r--drivers/infiniband/ulp/isert/ib_isert.c114
-rw-r--r--drivers/infiniband/ulp/isert/ib_isert.h2
2 files changed, 41 insertions, 75 deletions
diff --git a/drivers/infiniband/ulp/isert/ib_isert.c b/drivers/infiniband/ulp/isert/ib_isert.c
index c42748b3b257..027a818f287b 100644
--- a/drivers/infiniband/ulp/isert/ib_isert.c
+++ b/drivers/infiniband/ulp/isert/ib_isert.c
@@ -39,7 +39,6 @@ static DEFINE_MUTEX(device_list_mutex);
39static LIST_HEAD(device_list); 39static LIST_HEAD(device_list);
40static struct workqueue_struct *isert_rx_wq; 40static struct workqueue_struct *isert_rx_wq;
41static struct workqueue_struct *isert_comp_wq; 41static struct workqueue_struct *isert_comp_wq;
42static struct kmem_cache *isert_cmd_cache;
43 42
44static void 43static void
45isert_qp_event_callback(struct ib_event *e, void *context) 44isert_qp_event_callback(struct ib_event *e, void *context)
@@ -876,43 +875,30 @@ isert_rx_login_req(struct iser_rx_desc *rx_desc, int rx_buflen,
876 schedule_delayed_work(&conn->login_work, 0); 875 schedule_delayed_work(&conn->login_work, 0);
877} 876}
878 877
879static void
880isert_release_cmd(struct iscsi_cmd *cmd)
881{
882 struct isert_cmd *isert_cmd = container_of(cmd, struct isert_cmd,
883 iscsi_cmd);
884
885 pr_debug("Entering isert_release_cmd %p >>>>>>>>>>>>>>>.\n", isert_cmd);
886
887 kfree(cmd->buf_ptr);
888 kfree(cmd->tmr_req);
889
890 kmem_cache_free(isert_cmd_cache, isert_cmd);
891}
892
893static struct iscsi_cmd 878static struct iscsi_cmd
894*isert_alloc_cmd(struct iscsi_conn *conn, gfp_t gfp) 879*isert_allocate_cmd(struct iscsi_conn *conn, gfp_t gfp)
895{ 880{
896 struct isert_conn *isert_conn = (struct isert_conn *)conn->context; 881 struct isert_conn *isert_conn = (struct isert_conn *)conn->context;
897 struct isert_cmd *isert_cmd; 882 struct isert_cmd *isert_cmd;
883 struct iscsi_cmd *cmd;
898 884
899 isert_cmd = kmem_cache_zalloc(isert_cmd_cache, gfp); 885 cmd = iscsit_allocate_cmd(conn, gfp);
900 if (!isert_cmd) { 886 if (!cmd) {
901 pr_err("Unable to allocate isert_cmd\n"); 887 pr_err("Unable to allocate iscsi_cmd + isert_cmd\n");
902 return NULL; 888 return NULL;
903 } 889 }
890 isert_cmd = iscsit_priv_cmd(cmd);
904 isert_cmd->conn = isert_conn; 891 isert_cmd->conn = isert_conn;
905 isert_cmd->iscsi_cmd.release_cmd = &isert_release_cmd; 892 isert_cmd->iscsi_cmd = cmd;
906 893
907 return &isert_cmd->iscsi_cmd; 894 return cmd;
908} 895}
909 896
910static int 897static int
911isert_handle_scsi_cmd(struct isert_conn *isert_conn, 898isert_handle_scsi_cmd(struct isert_conn *isert_conn,
912 struct isert_cmd *isert_cmd, struct iser_rx_desc *rx_desc, 899 struct isert_cmd *isert_cmd, struct iscsi_cmd *cmd,
913 unsigned char *buf) 900 struct iser_rx_desc *rx_desc, unsigned char *buf)
914{ 901{
915 struct iscsi_cmd *cmd = &isert_cmd->iscsi_cmd;
916 struct iscsi_conn *conn = isert_conn->conn; 902 struct iscsi_conn *conn = isert_conn->conn;
917 struct iscsi_scsi_req *hdr = (struct iscsi_scsi_req *)buf; 903 struct iscsi_scsi_req *hdr = (struct iscsi_scsi_req *)buf;
918 struct scatterlist *sg; 904 struct scatterlist *sg;
@@ -1019,9 +1005,9 @@ isert_handle_iscsi_dataout(struct isert_conn *isert_conn,
1019 1005
1020static int 1006static int
1021isert_handle_nop_out(struct isert_conn *isert_conn, struct isert_cmd *isert_cmd, 1007isert_handle_nop_out(struct isert_conn *isert_conn, struct isert_cmd *isert_cmd,
1022 struct iser_rx_desc *rx_desc, unsigned char *buf) 1008 struct iscsi_cmd *cmd, struct iser_rx_desc *rx_desc,
1009 unsigned char *buf)
1023{ 1010{
1024 struct iscsi_cmd *cmd = &isert_cmd->iscsi_cmd;
1025 struct iscsi_conn *conn = isert_conn->conn; 1011 struct iscsi_conn *conn = isert_conn->conn;
1026 struct iscsi_nopout *hdr = (struct iscsi_nopout *)buf; 1012 struct iscsi_nopout *hdr = (struct iscsi_nopout *)buf;
1027 int rc; 1013 int rc;
@@ -1038,9 +1024,9 @@ isert_handle_nop_out(struct isert_conn *isert_conn, struct isert_cmd *isert_cmd,
1038 1024
1039static int 1025static int
1040isert_handle_text_cmd(struct isert_conn *isert_conn, struct isert_cmd *isert_cmd, 1026isert_handle_text_cmd(struct isert_conn *isert_conn, struct isert_cmd *isert_cmd,
1041 struct iser_rx_desc *rx_desc, struct iscsi_text *hdr) 1027 struct iscsi_cmd *cmd, struct iser_rx_desc *rx_desc,
1028 struct iscsi_text *hdr)
1042{ 1029{
1043 struct iscsi_cmd *cmd = &isert_cmd->iscsi_cmd;
1044 struct iscsi_conn *conn = isert_conn->conn; 1030 struct iscsi_conn *conn = isert_conn->conn;
1045 u32 payload_length = ntoh24(hdr->dlength); 1031 u32 payload_length = ntoh24(hdr->dlength);
1046 int rc; 1032 int rc;
@@ -1085,26 +1071,26 @@ isert_rx_opcode(struct isert_conn *isert_conn, struct iser_rx_desc *rx_desc,
1085 1071
1086 switch (opcode) { 1072 switch (opcode) {
1087 case ISCSI_OP_SCSI_CMD: 1073 case ISCSI_OP_SCSI_CMD:
1088 cmd = iscsit_allocate_cmd(conn, GFP_KERNEL); 1074 cmd = isert_allocate_cmd(conn, GFP_KERNEL);
1089 if (!cmd) 1075 if (!cmd)
1090 break; 1076 break;
1091 1077
1092 isert_cmd = container_of(cmd, struct isert_cmd, iscsi_cmd); 1078 isert_cmd = iscsit_priv_cmd(cmd);
1093 isert_cmd->read_stag = read_stag; 1079 isert_cmd->read_stag = read_stag;
1094 isert_cmd->read_va = read_va; 1080 isert_cmd->read_va = read_va;
1095 isert_cmd->write_stag = write_stag; 1081 isert_cmd->write_stag = write_stag;
1096 isert_cmd->write_va = write_va; 1082 isert_cmd->write_va = write_va;
1097 1083
1098 ret = isert_handle_scsi_cmd(isert_conn, isert_cmd, 1084 ret = isert_handle_scsi_cmd(isert_conn, isert_cmd, cmd,
1099 rx_desc, (unsigned char *)hdr); 1085 rx_desc, (unsigned char *)hdr);
1100 break; 1086 break;
1101 case ISCSI_OP_NOOP_OUT: 1087 case ISCSI_OP_NOOP_OUT:
1102 cmd = iscsit_allocate_cmd(conn, GFP_KERNEL); 1088 cmd = isert_allocate_cmd(conn, GFP_KERNEL);
1103 if (!cmd) 1089 if (!cmd)
1104 break; 1090 break;
1105 1091
1106 isert_cmd = container_of(cmd, struct isert_cmd, iscsi_cmd); 1092 isert_cmd = iscsit_priv_cmd(cmd);
1107 ret = isert_handle_nop_out(isert_conn, isert_cmd, 1093 ret = isert_handle_nop_out(isert_conn, isert_cmd, cmd,
1108 rx_desc, (unsigned char *)hdr); 1094 rx_desc, (unsigned char *)hdr);
1109 break; 1095 break;
1110 case ISCSI_OP_SCSI_DATA_OUT: 1096 case ISCSI_OP_SCSI_DATA_OUT:
@@ -1112,7 +1098,7 @@ isert_rx_opcode(struct isert_conn *isert_conn, struct iser_rx_desc *rx_desc,
1112 (unsigned char *)hdr); 1098 (unsigned char *)hdr);
1113 break; 1099 break;
1114 case ISCSI_OP_SCSI_TMFUNC: 1100 case ISCSI_OP_SCSI_TMFUNC:
1115 cmd = iscsit_allocate_cmd(conn, GFP_KERNEL); 1101 cmd = isert_allocate_cmd(conn, GFP_KERNEL);
1116 if (!cmd) 1102 if (!cmd)
1117 break; 1103 break;
1118 1104
@@ -1120,7 +1106,7 @@ isert_rx_opcode(struct isert_conn *isert_conn, struct iser_rx_desc *rx_desc,
1120 (unsigned char *)hdr); 1106 (unsigned char *)hdr);
1121 break; 1107 break;
1122 case ISCSI_OP_LOGOUT: 1108 case ISCSI_OP_LOGOUT:
1123 cmd = iscsit_allocate_cmd(conn, GFP_KERNEL); 1109 cmd = isert_allocate_cmd(conn, GFP_KERNEL);
1124 if (!cmd) 1110 if (!cmd)
1125 break; 1111 break;
1126 1112
@@ -1131,12 +1117,12 @@ isert_rx_opcode(struct isert_conn *isert_conn, struct iser_rx_desc *rx_desc,
1131 HZ); 1117 HZ);
1132 break; 1118 break;
1133 case ISCSI_OP_TEXT: 1119 case ISCSI_OP_TEXT:
1134 cmd = iscsit_allocate_cmd(conn, GFP_KERNEL); 1120 cmd = isert_allocate_cmd(conn, GFP_KERNEL);
1135 if (!cmd) 1121 if (!cmd)
1136 break; 1122 break;
1137 1123
1138 isert_cmd = container_of(cmd, struct isert_cmd, iscsi_cmd); 1124 isert_cmd = iscsit_priv_cmd(cmd);
1139 ret = isert_handle_text_cmd(isert_conn, isert_cmd, 1125 ret = isert_handle_text_cmd(isert_conn, isert_cmd, cmd,
1140 rx_desc, (struct iscsi_text *)hdr); 1126 rx_desc, (struct iscsi_text *)hdr);
1141 break; 1127 break;
1142 default: 1128 default:
@@ -1264,7 +1250,7 @@ isert_unmap_cmd(struct isert_cmd *isert_cmd, struct isert_conn *isert_conn)
1264static void 1250static void
1265isert_put_cmd(struct isert_cmd *isert_cmd) 1251isert_put_cmd(struct isert_cmd *isert_cmd)
1266{ 1252{
1267 struct iscsi_cmd *cmd = &isert_cmd->iscsi_cmd; 1253 struct iscsi_cmd *cmd = isert_cmd->iscsi_cmd;
1268 struct isert_conn *isert_conn = isert_cmd->conn; 1254 struct isert_conn *isert_conn = isert_cmd->conn;
1269 struct iscsi_conn *conn = isert_conn->conn; 1255 struct iscsi_conn *conn = isert_conn->conn;
1270 1256
@@ -1315,7 +1301,7 @@ isert_put_cmd(struct isert_cmd *isert_cmd)
1315 * Fall-through 1301 * Fall-through
1316 */ 1302 */
1317 default: 1303 default:
1318 isert_release_cmd(cmd); 1304 iscsit_release_cmd(cmd);
1319 break; 1305 break;
1320 } 1306 }
1321} 1307}
@@ -1351,7 +1337,7 @@ isert_completion_rdma_read(struct iser_tx_desc *tx_desc,
1351 struct isert_cmd *isert_cmd) 1337 struct isert_cmd *isert_cmd)
1352{ 1338{
1353 struct isert_rdma_wr *wr = &isert_cmd->rdma_wr; 1339 struct isert_rdma_wr *wr = &isert_cmd->rdma_wr;
1354 struct iscsi_cmd *cmd = &isert_cmd->iscsi_cmd; 1340 struct iscsi_cmd *cmd = isert_cmd->iscsi_cmd;
1355 struct se_cmd *se_cmd = &cmd->se_cmd; 1341 struct se_cmd *se_cmd = &cmd->se_cmd;
1356 struct ib_device *ib_dev = isert_cmd->conn->conn_cm_id->device; 1342 struct ib_device *ib_dev = isert_cmd->conn->conn_cm_id->device;
1357 1343
@@ -1387,7 +1373,7 @@ isert_do_control_comp(struct work_struct *work)
1387 struct isert_cmd, comp_work); 1373 struct isert_cmd, comp_work);
1388 struct isert_conn *isert_conn = isert_cmd->conn; 1374 struct isert_conn *isert_conn = isert_cmd->conn;
1389 struct ib_device *ib_dev = isert_conn->conn_cm_id->device; 1375 struct ib_device *ib_dev = isert_conn->conn_cm_id->device;
1390 struct iscsi_cmd *cmd = &isert_cmd->iscsi_cmd; 1376 struct iscsi_cmd *cmd = isert_cmd->iscsi_cmd;
1391 1377
1392 switch (cmd->i_state) { 1378 switch (cmd->i_state) {
1393 case ISTATE_SEND_TASKMGTRSP: 1379 case ISTATE_SEND_TASKMGTRSP:
@@ -1433,7 +1419,7 @@ isert_response_completion(struct iser_tx_desc *tx_desc,
1433 struct isert_conn *isert_conn, 1419 struct isert_conn *isert_conn,
1434 struct ib_device *ib_dev) 1420 struct ib_device *ib_dev)
1435{ 1421{
1436 struct iscsi_cmd *cmd = &isert_cmd->iscsi_cmd; 1422 struct iscsi_cmd *cmd = isert_cmd->iscsi_cmd;
1437 1423
1438 if (cmd->i_state == ISTATE_SEND_TASKMGTRSP || 1424 if (cmd->i_state == ISTATE_SEND_TASKMGTRSP ||
1439 cmd->i_state == ISTATE_SEND_LOGOUTRSP || 1425 cmd->i_state == ISTATE_SEND_LOGOUTRSP ||
@@ -1625,8 +1611,7 @@ isert_post_response(struct isert_conn *isert_conn, struct isert_cmd *isert_cmd)
1625static int 1611static int
1626isert_put_response(struct iscsi_conn *conn, struct iscsi_cmd *cmd) 1612isert_put_response(struct iscsi_conn *conn, struct iscsi_cmd *cmd)
1627{ 1613{
1628 struct isert_cmd *isert_cmd = container_of(cmd, 1614 struct isert_cmd *isert_cmd = iscsit_priv_cmd(cmd);
1629 struct isert_cmd, iscsi_cmd);
1630 struct isert_conn *isert_conn = (struct isert_conn *)conn->context; 1615 struct isert_conn *isert_conn = (struct isert_conn *)conn->context;
1631 struct ib_send_wr *send_wr = &isert_cmd->tx_desc.send_wr; 1616 struct ib_send_wr *send_wr = &isert_cmd->tx_desc.send_wr;
1632 struct iscsi_scsi_rsp *hdr = (struct iscsi_scsi_rsp *) 1617 struct iscsi_scsi_rsp *hdr = (struct iscsi_scsi_rsp *)
@@ -1675,8 +1660,7 @@ static int
1675isert_put_nopin(struct iscsi_cmd *cmd, struct iscsi_conn *conn, 1660isert_put_nopin(struct iscsi_cmd *cmd, struct iscsi_conn *conn,
1676 bool nopout_response) 1661 bool nopout_response)
1677{ 1662{
1678 struct isert_cmd *isert_cmd = container_of(cmd, 1663 struct isert_cmd *isert_cmd = iscsit_priv_cmd(cmd);
1679 struct isert_cmd, iscsi_cmd);
1680 struct isert_conn *isert_conn = (struct isert_conn *)conn->context; 1664 struct isert_conn *isert_conn = (struct isert_conn *)conn->context;
1681 struct ib_send_wr *send_wr = &isert_cmd->tx_desc.send_wr; 1665 struct ib_send_wr *send_wr = &isert_cmd->tx_desc.send_wr;
1682 1666
@@ -1695,8 +1679,7 @@ isert_put_nopin(struct iscsi_cmd *cmd, struct iscsi_conn *conn,
1695static int 1679static int
1696isert_put_logout_rsp(struct iscsi_cmd *cmd, struct iscsi_conn *conn) 1680isert_put_logout_rsp(struct iscsi_cmd *cmd, struct iscsi_conn *conn)
1697{ 1681{
1698 struct isert_cmd *isert_cmd = container_of(cmd, 1682 struct isert_cmd *isert_cmd = iscsit_priv_cmd(cmd);
1699 struct isert_cmd, iscsi_cmd);
1700 struct isert_conn *isert_conn = (struct isert_conn *)conn->context; 1683 struct isert_conn *isert_conn = (struct isert_conn *)conn->context;
1701 struct ib_send_wr *send_wr = &isert_cmd->tx_desc.send_wr; 1684 struct ib_send_wr *send_wr = &isert_cmd->tx_desc.send_wr;
1702 1685
@@ -1714,8 +1697,7 @@ isert_put_logout_rsp(struct iscsi_cmd *cmd, struct iscsi_conn *conn)
1714static int 1697static int
1715isert_put_tm_rsp(struct iscsi_cmd *cmd, struct iscsi_conn *conn) 1698isert_put_tm_rsp(struct iscsi_cmd *cmd, struct iscsi_conn *conn)
1716{ 1699{
1717 struct isert_cmd *isert_cmd = container_of(cmd, 1700 struct isert_cmd *isert_cmd = iscsit_priv_cmd(cmd);
1718 struct isert_cmd, iscsi_cmd);
1719 struct isert_conn *isert_conn = (struct isert_conn *)conn->context; 1701 struct isert_conn *isert_conn = (struct isert_conn *)conn->context;
1720 struct ib_send_wr *send_wr = &isert_cmd->tx_desc.send_wr; 1702 struct ib_send_wr *send_wr = &isert_cmd->tx_desc.send_wr;
1721 1703
@@ -1733,8 +1715,7 @@ isert_put_tm_rsp(struct iscsi_cmd *cmd, struct iscsi_conn *conn)
1733static int 1715static int
1734isert_put_reject(struct iscsi_cmd *cmd, struct iscsi_conn *conn) 1716isert_put_reject(struct iscsi_cmd *cmd, struct iscsi_conn *conn)
1735{ 1717{
1736 struct isert_cmd *isert_cmd = container_of(cmd, 1718 struct isert_cmd *isert_cmd = iscsit_priv_cmd(cmd);
1737 struct isert_cmd, iscsi_cmd);
1738 struct isert_conn *isert_conn = (struct isert_conn *)conn->context; 1719 struct isert_conn *isert_conn = (struct isert_conn *)conn->context;
1739 struct ib_send_wr *send_wr = &isert_cmd->tx_desc.send_wr; 1720 struct ib_send_wr *send_wr = &isert_cmd->tx_desc.send_wr;
1740 struct ib_device *ib_dev = isert_conn->conn_cm_id->device; 1721 struct ib_device *ib_dev = isert_conn->conn_cm_id->device;
@@ -1766,8 +1747,7 @@ isert_put_reject(struct iscsi_cmd *cmd, struct iscsi_conn *conn)
1766static int 1747static int
1767isert_put_text_rsp(struct iscsi_cmd *cmd, struct iscsi_conn *conn) 1748isert_put_text_rsp(struct iscsi_cmd *cmd, struct iscsi_conn *conn)
1768{ 1749{
1769 struct isert_cmd *isert_cmd = container_of(cmd, 1750 struct isert_cmd *isert_cmd = iscsit_priv_cmd(cmd);
1770 struct isert_cmd, iscsi_cmd);
1771 struct isert_conn *isert_conn = (struct isert_conn *)conn->context; 1751 struct isert_conn *isert_conn = (struct isert_conn *)conn->context;
1772 struct ib_send_wr *send_wr = &isert_cmd->tx_desc.send_wr; 1752 struct ib_send_wr *send_wr = &isert_cmd->tx_desc.send_wr;
1773 struct iscsi_text_rsp *hdr = 1753 struct iscsi_text_rsp *hdr =
@@ -1809,7 +1789,7 @@ isert_build_rdma_wr(struct isert_conn *isert_conn, struct isert_cmd *isert_cmd,
1809 struct ib_sge *ib_sge, struct ib_send_wr *send_wr, 1789 struct ib_sge *ib_sge, struct ib_send_wr *send_wr,
1810 u32 data_left, u32 offset) 1790 u32 data_left, u32 offset)
1811{ 1791{
1812 struct iscsi_cmd *cmd = &isert_cmd->iscsi_cmd; 1792 struct iscsi_cmd *cmd = isert_cmd->iscsi_cmd;
1813 struct scatterlist *sg_start, *tmp_sg; 1793 struct scatterlist *sg_start, *tmp_sg;
1814 struct ib_device *ib_dev = isert_conn->conn_cm_id->device; 1794 struct ib_device *ib_dev = isert_conn->conn_cm_id->device;
1815 u32 sg_off, page_off; 1795 u32 sg_off, page_off;
@@ -1854,8 +1834,7 @@ static int
1854isert_put_datain(struct iscsi_conn *conn, struct iscsi_cmd *cmd) 1834isert_put_datain(struct iscsi_conn *conn, struct iscsi_cmd *cmd)
1855{ 1835{
1856 struct se_cmd *se_cmd = &cmd->se_cmd; 1836 struct se_cmd *se_cmd = &cmd->se_cmd;
1857 struct isert_cmd *isert_cmd = container_of(cmd, 1837 struct isert_cmd *isert_cmd = iscsit_priv_cmd(cmd);
1858 struct isert_cmd, iscsi_cmd);
1859 struct isert_rdma_wr *wr = &isert_cmd->rdma_wr; 1838 struct isert_rdma_wr *wr = &isert_cmd->rdma_wr;
1860 struct isert_conn *isert_conn = (struct isert_conn *)conn->context; 1839 struct isert_conn *isert_conn = (struct isert_conn *)conn->context;
1861 struct ib_send_wr *wr_failed, *send_wr; 1840 struct ib_send_wr *wr_failed, *send_wr;
@@ -1958,8 +1937,7 @@ static int
1958isert_get_dataout(struct iscsi_conn *conn, struct iscsi_cmd *cmd, bool recovery) 1937isert_get_dataout(struct iscsi_conn *conn, struct iscsi_cmd *cmd, bool recovery)
1959{ 1938{
1960 struct se_cmd *se_cmd = &cmd->se_cmd; 1939 struct se_cmd *se_cmd = &cmd->se_cmd;
1961 struct isert_cmd *isert_cmd = container_of(cmd, 1940 struct isert_cmd *isert_cmd = iscsit_priv_cmd(cmd);
1962 struct isert_cmd, iscsi_cmd);
1963 struct isert_rdma_wr *wr = &isert_cmd->rdma_wr; 1941 struct isert_rdma_wr *wr = &isert_cmd->rdma_wr;
1964 struct isert_conn *isert_conn = (struct isert_conn *)conn->context; 1942 struct isert_conn *isert_conn = (struct isert_conn *)conn->context;
1965 struct ib_send_wr *wr_failed, *send_wr; 1943 struct ib_send_wr *wr_failed, *send_wr;
@@ -2405,12 +2383,12 @@ static void isert_free_conn(struct iscsi_conn *conn)
2405static struct iscsit_transport iser_target_transport = { 2383static struct iscsit_transport iser_target_transport = {
2406 .name = "IB/iSER", 2384 .name = "IB/iSER",
2407 .transport_type = ISCSI_INFINIBAND, 2385 .transport_type = ISCSI_INFINIBAND,
2386 .priv_size = sizeof(struct isert_cmd),
2408 .owner = THIS_MODULE, 2387 .owner = THIS_MODULE,
2409 .iscsit_setup_np = isert_setup_np, 2388 .iscsit_setup_np = isert_setup_np,
2410 .iscsit_accept_np = isert_accept_np, 2389 .iscsit_accept_np = isert_accept_np,
2411 .iscsit_free_np = isert_free_np, 2390 .iscsit_free_np = isert_free_np,
2412 .iscsit_free_conn = isert_free_conn, 2391 .iscsit_free_conn = isert_free_conn,
2413 .iscsit_alloc_cmd = isert_alloc_cmd,
2414 .iscsit_get_login_rx = isert_get_login_rx, 2392 .iscsit_get_login_rx = isert_get_login_rx,
2415 .iscsit_put_login_tx = isert_put_login_tx, 2393 .iscsit_put_login_tx = isert_put_login_tx,
2416 .iscsit_immediate_queue = isert_immediate_queue, 2394 .iscsit_immediate_queue = isert_immediate_queue,
@@ -2437,21 +2415,10 @@ static int __init isert_init(void)
2437 goto destroy_rx_wq; 2415 goto destroy_rx_wq;
2438 } 2416 }
2439 2417
2440 isert_cmd_cache = kmem_cache_create("isert_cmd_cache",
2441 sizeof(struct isert_cmd), __alignof__(struct isert_cmd),
2442 0, NULL);
2443 if (!isert_cmd_cache) {
2444 pr_err("Unable to create isert_cmd_cache\n");
2445 ret = -ENOMEM;
2446 goto destroy_tx_cq;
2447 }
2448
2449 iscsit_register_transport(&iser_target_transport); 2418 iscsit_register_transport(&iser_target_transport);
2450 pr_debug("iSER_TARGET[0] - Loaded iser_target_transport\n"); 2419 pr_debug("iSER_TARGET[0] - Loaded iser_target_transport\n");
2451 return 0; 2420 return 0;
2452 2421
2453destroy_tx_cq:
2454 destroy_workqueue(isert_comp_wq);
2455destroy_rx_wq: 2422destroy_rx_wq:
2456 destroy_workqueue(isert_rx_wq); 2423 destroy_workqueue(isert_rx_wq);
2457 return ret; 2424 return ret;
@@ -2459,7 +2426,6 @@ destroy_rx_wq:
2459 2426
2460static void __exit isert_exit(void) 2427static void __exit isert_exit(void)
2461{ 2428{
2462 kmem_cache_destroy(isert_cmd_cache);
2463 destroy_workqueue(isert_comp_wq); 2429 destroy_workqueue(isert_comp_wq);
2464 destroy_workqueue(isert_rx_wq); 2430 destroy_workqueue(isert_rx_wq);
2465 iscsit_unregister_transport(&iser_target_transport); 2431 iscsit_unregister_transport(&iser_target_transport);
diff --git a/drivers/infiniband/ulp/isert/ib_isert.h b/drivers/infiniband/ulp/isert/ib_isert.h
index 191117b5b508..0d45945201cb 100644
--- a/drivers/infiniband/ulp/isert/ib_isert.h
+++ b/drivers/infiniband/ulp/isert/ib_isert.h
@@ -67,7 +67,7 @@ struct isert_cmd {
67 u32 write_va_off; 67 u32 write_va_off;
68 u32 rdma_wr_num; 68 u32 rdma_wr_num;
69 struct isert_conn *conn; 69 struct isert_conn *conn;
70 struct iscsi_cmd iscsi_cmd; 70 struct iscsi_cmd *iscsi_cmd;
71 struct ib_sge *ib_sge; 71 struct ib_sge *ib_sge;
72 struct iser_tx_desc tx_desc; 72 struct iser_tx_desc tx_desc;
73 struct isert_rdma_wr rdma_wr; 73 struct isert_rdma_wr rdma_wr;