提交 f93f3a70 编写于 作者: S Sagi Grimberg 提交者: Nicholas Bellinger

IB/isert: Accept RDMA_WRITE completions

In case of protected transactions, we will need to check the
protection status of the transaction before sending SCSI response.
So be ready for RDMA_WRITE completions. currently we don't ask
for these completions, but for T10-PI we will.
Signed-off-by: NSagi Grimberg <sagig@mellanox.com>
Signed-off-by: NNicholas Bellinger <nab@linux-iscsi.org>
上级 d3e125da
...@@ -51,6 +51,8 @@ isert_unreg_rdma(struct isert_cmd *isert_cmd, struct isert_conn *isert_conn); ...@@ -51,6 +51,8 @@ isert_unreg_rdma(struct isert_cmd *isert_cmd, struct isert_conn *isert_conn);
static int static int
isert_reg_rdma(struct iscsi_conn *conn, struct iscsi_cmd *cmd, isert_reg_rdma(struct iscsi_conn *conn, struct iscsi_cmd *cmd,
struct isert_rdma_wr *wr); struct isert_rdma_wr *wr);
static int
isert_put_response(struct iscsi_conn *conn, struct iscsi_cmd *cmd);
static void static void
isert_qp_event_callback(struct ib_event *e, void *context) isert_qp_event_callback(struct ib_event *e, void *context)
...@@ -1651,6 +1653,18 @@ isert_completion_put(struct iser_tx_desc *tx_desc, struct isert_cmd *isert_cmd, ...@@ -1651,6 +1653,18 @@ isert_completion_put(struct iser_tx_desc *tx_desc, struct isert_cmd *isert_cmd,
isert_put_cmd(isert_cmd); isert_put_cmd(isert_cmd);
} }
static void
isert_completion_rdma_write(struct iser_tx_desc *tx_desc,
struct isert_cmd *isert_cmd)
{
struct iscsi_cmd *cmd = isert_cmd->iscsi_cmd;
struct isert_conn *isert_conn = isert_cmd->conn;
struct isert_device *device = isert_conn->conn_device;
device->unreg_rdma_mem(isert_cmd, isert_conn);
isert_put_response(isert_conn->conn, cmd);
}
static void static void
isert_completion_rdma_read(struct iser_tx_desc *tx_desc, isert_completion_rdma_read(struct iser_tx_desc *tx_desc,
struct isert_cmd *isert_cmd) struct isert_cmd *isert_cmd)
...@@ -1773,8 +1787,9 @@ __isert_send_completion(struct iser_tx_desc *tx_desc, ...@@ -1773,8 +1787,9 @@ __isert_send_completion(struct iser_tx_desc *tx_desc,
isert_conn, ib_dev); isert_conn, ib_dev);
break; break;
case ISER_IB_RDMA_WRITE: case ISER_IB_RDMA_WRITE:
pr_err("isert_send_completion: Got ISER_IB_RDMA_WRITE\n"); pr_debug("isert_send_completion: Got ISER_IB_RDMA_WRITE\n");
dump_stack(); atomic_dec(&isert_conn->post_send_buf_count);
isert_completion_rdma_write(tx_desc, isert_cmd);
break; break;
case ISER_IB_RDMA_READ: case ISER_IB_RDMA_READ:
pr_debug("isert_send_completion: Got ISER_IB_RDMA_READ:\n"); pr_debug("isert_send_completion: Got ISER_IB_RDMA_READ:\n");
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册