|
@@ -2123,6 +2123,9 @@ isert_rdma_rw_ctx_post(struct isert_cmd *cmd, struct isert_conn *conn,
|
|
|
u32 rkey, offset;
|
|
|
int ret;
|
|
|
|
|
|
+ if (cmd->ctx_init_done)
|
|
|
+ goto rdma_ctx_post;
|
|
|
+
|
|
|
if (dir == DMA_FROM_DEVICE) {
|
|
|
addr = cmd->write_va;
|
|
|
rkey = cmd->write_stag;
|
|
@@ -2150,11 +2153,15 @@ isert_rdma_rw_ctx_post(struct isert_cmd *cmd, struct isert_conn *conn,
|
|
|
se_cmd->t_data_sg, se_cmd->t_data_nents,
|
|
|
offset, addr, rkey, dir);
|
|
|
}
|
|
|
+
|
|
|
if (ret < 0) {
|
|
|
isert_err("Cmd: %p failed to prepare RDMA res\n", cmd);
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
+ cmd->ctx_init_done = true;
|
|
|
+
|
|
|
+rdma_ctx_post:
|
|
|
ret = rdma_rw_ctx_post(&cmd->rw, conn->qp, port_num, cqe, chain_wr);
|
|
|
if (ret < 0)
|
|
|
isert_err("Cmd: %p failed to post RDMA res\n", cmd);
|