On Wed, 2014-02-19 at 17:50 +0200, Sagi Grimberg wrote:
> Hey Nic,
>
> I addressed your comments in the this set. I'll try to send the
> initiator code for review in the next couple of days.
>
> This patchset introduces target side T10-PI offload support over
> RDMA. Currently the implementation is for iSER transport but can
> be easily extended to SRP (or FCoE in the future).
>
> Should mention that this patchset depends on RDMA signature
> verbs making it for inclusion which will hopefully happen in
> near future.
>
> This code was tested against iSER legacy initiator, and also
> initiator that uses T10-PI offload as well. I'll clean up the
> initiator code in the following days and submit that as well.
>
> This code works under medium loads using backstores:
> - FileIO with DIF emulation.
> - RD with DIF emulation.
> - iBLOCK (scsi_debug with DIF support).
>
> Chnages from v1:
> - Rebased rdma_dif (3.14-rc2)
> - Target core:
> - Pass zero_flag=true to alloc_sgl for protection buffers
> - Removed Unneeded inline function rwprotect
> - Pass is_write bool to sbc_set_prot_op_checks
> - Send failure response for absence of protection buffers
> when needed.
> - iSER:
> - Removed unneeded assignments in isert_set_sig_attrs
>
> Chnages from v0:
> - Rebased from for-next
> - Target core:
> - Don't minor fixes for check_prot - to support transports
> that doesn't use submit_map_sgls.
> - file format - use escape values.
> - Removed redundant prot_handover.
> - Added protection checks and operation set.
> - iSER:
> - Added preperation routines for mapping/unmapping buffers
> to ease the amount of code in isert_reg_rdma.
> - Fixed print of DIF error (sector instead of offset).
> - Fix RDMA length for protection on wire domain.
> - Refactored reg_sig_mr to use helper routines.
>
Hey Sagi,
FYI, this series did not compile:
drivers/infiniband/ulp/isert/ib_isert.c: In function ‘isert_reg_sig_mr’:
drivers/infiniband/ulp/isert/ib_isert.c:2531:2: error: expected ‘;’ before ‘ret’
drivers/infiniband/ulp/isert/ib_isert.c: In function ‘isert_reg_rdma’:
drivers/infiniband/ulp/isert/ib_isert.c:2611:24: warning: comparison between
‘enum target_prot_type’ and ‘enum target_prot_op’ [-Wenum-compare]
drivers/infiniband/ulp/isert/ib_isert.c:2625:24: warning: comparison between
‘enum target_prot_type’ and ‘enum target_prot_op’ [-Wenum-compare]
drivers/infiniband/ulp/isert/ib_isert.c:2667:43: warning: comparison between
‘enum target_prot_type’ and ‘enum target_prot_op’ [-Wenum-compare]
drivers/infiniband/ulp/isert/ib_isert.c: In function ‘isert_put_datain’:
drivers/infiniband/ulp/isert/ib_isert.c:2711:24: warning: comparison between
‘enum target_prot_type’ and ‘enum target_prot_op’ [-Wenum-compare]
drivers/infiniband/ulp/isert/ib_isert.c:2732:24: warning: comparison between
‘enum target_prot_type’ and ‘enum target_prot_op’ [-Wenum-compare]
drivers/infiniband/ulp/isert/ib_isert.c: At top level:
drivers/infiniband/ulp/isert/ib_isert.c:2468:1: warning: ‘isert_set_sig_attrs’
defined but not used [-Wunused-function]
drivers/target/target_core_transport.c: In function ‘transport_generic_new_cmd’:
drivers/target/target_core_transport.c:2221:22: warning: comparison between
‘enum target_prot_type’ and ‘enum target_prot_op’ [-Wenum-compare]
Squashing the following patch(es) into your original series, and applied
to target-pending/rdma-dif.
Thank you,
--nab
diff --git a/drivers/infiniband/ulp/isert/ib_isert.c
b/drivers/infiniband/ulp/isert/ib_isert.
index 04bdd79..b7c8cd7 100644
--- a/drivers/infiniband/ulp/isert/ib_isert.c
+++ b/drivers/infiniband/ulp/isert/ib_isert.c
@@ -2527,7 +2527,7 @@ isert_reg_sig_mr(struct isert_conn *isert_conn, struct
se_cmd *se_cmd,
int ret;
u32 key;
- memset(&sig_attrs, 0, sizeof(sig_attrs))
+ memset(&sig_attrs, 0, sizeof(sig_attrs));
ret = isert_set_sig_attrs(se_cmd, &sig_attrs);
if (ret)
goto err;
@@ -2608,7 +2608,7 @@ isert_reg_rdma(struct iscsi_conn *conn, struct iscsi_cmd
*cmd,
return ret;
if (wr->data.dma_nents != 1 ||
- se_cmd->prot_type != TARGET_PROT_NORMAL) {
+ se_cmd->prot_op != TARGET_PROT_NORMAL) {
spin_lock_irqsave(&isert_conn->conn_lock, flags);
fr_desc = list_first_entry(&isert_conn->conn_fr_pool,
struct fast_reg_descriptor, list);
@@ -2622,7 +2622,7 @@ isert_reg_rdma(struct iscsi_conn *conn, struct iscsi_cmd
*cmd,
if (ret)
goto unmap_cmd;
- if (se_cmd->prot_type != TARGET_PROT_NORMAL) {
+ if (se_cmd->prot_op != TARGET_PROT_NORMAL) {
struct ib_sge prot_sge, sig_sge;
if (se_cmd->t_prot_sg) {
@@ -2664,7 +2664,7 @@ isert_reg_rdma(struct iscsi_conn *conn, struct iscsi_cmd
*cmd,
send_wr->opcode = IB_WR_RDMA_WRITE;
send_wr->wr.rdma.remote_addr = isert_cmd->read_va;
send_wr->wr.rdma.rkey = isert_cmd->read_stag;
- send_wr->send_flags = se_cmd->prot_type == TARGET_PROT_NORMAL ?
+ send_wr->send_flags = se_cmd->prot_op == TARGET_PROT_NORMAL ?
0 : IB_SEND_SIGNALED;
} else {
send_wr->opcode = IB_WR_RDMA_READ;
@@ -2708,7 +2708,7 @@ isert_put_datain(struct iscsi_conn *conn, struct
iscsi_cmd *cmd)
return rc;
}
- if (se_cmd->prot_type == TARGET_PROT_NORMAL) {
+ if (se_cmd->prot_op == TARGET_PROT_NORMAL) {
/*
* Build isert_conn->tx_desc for iSCSI response PDU and attach
*/
@@ -2729,7 +2729,7 @@ isert_put_datain(struct iscsi_conn *conn, struct
iscsi_cmd *cmd)
atomic_dec(&isert_conn->post_send_buf_count);
}
- if (se_cmd->prot_type == TARGET_PROT_NORMAL)
+ if (se_cmd->prot_op == TARGET_PROT_NORMAL)
pr_debug("Cmd: %p posted RDMA_WRITE + Response for iSER Data "
"READ\n", isert_cmd);
else
diff --git a/drivers/target/target_core_transport.c
b/drivers/target/target_core_transport.c
index a45d628..954e7ed 100644
--- a/drivers/target/target_core_transport.c
+++ b/drivers/target/target_core_transport.c
@@ -2218,7 +2218,7 @@ transport_generic_new_cmd(struct se_cmd *cmd)
return TCM_LOGICAL_UNIT_COMMUNICATION_FAILURE;
}
- if (cmd->prot_type != TARGET_PROT_NORMAL) {
+ if (cmd->prot_op != TARGET_PROT_NORMAL) {
ret = target_alloc_sgl(&cmd->t_prot_sg,
&cmd->t_prot_nents,
cmd->prot_length, true);
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html