iscsi-target: Disable Immediate + Unsolicited Data with ISER Protection
This patch explicitly disables Immediate + Unsolicited Data for ISER connections during login in iscsi_login_zero_tsih_s2() when protection has been enabled for the session by the underlying hardware. This is currently required because protection / signature memory regions (MRs) expect T10 PI to occur on RDMA READs + RDMA WRITEs transfers, and not on a immediate data payload associated with ISCSI_OP_SCSI_CMD, or unsolicited data-out associated with a ISCSI_OP_SCSI_DATA_OUT. v2 changes: - Add TARGET_PROT_DOUT_INSERT check (Sagi) - Add pr_debug noisemaker (Sagi) - Add goto to avoid early return from MRDSL check (nab) Cc: Sagi Grimberg <sagig@mellanox.com> Cc: Or Gerlitz <ogerlitz@mellanox.com> Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
This commit is contained in:
Родитель
ed8ec8f707
Коммит
52d0aa7980
|
@ -436,7 +436,7 @@ static int iscsi_login_zero_tsih_s2(
|
|||
}
|
||||
off = mrdsl % PAGE_SIZE;
|
||||
if (!off)
|
||||
return 0;
|
||||
goto check_prot;
|
||||
|
||||
if (mrdsl < PAGE_SIZE)
|
||||
mrdsl = PAGE_SIZE;
|
||||
|
@ -452,6 +452,31 @@ static int iscsi_login_zero_tsih_s2(
|
|||
ISCSI_LOGIN_STATUS_NO_RESOURCES);
|
||||
return -1;
|
||||
}
|
||||
/*
|
||||
* ISER currently requires that ImmediateData + Unsolicited
|
||||
* Data be disabled when protection / signature MRs are enabled.
|
||||
*/
|
||||
check_prot:
|
||||
if (sess->se_sess->sup_prot_ops &
|
||||
(TARGET_PROT_DOUT_STRIP | TARGET_PROT_DOUT_PASS |
|
||||
TARGET_PROT_DOUT_INSERT)) {
|
||||
|
||||
sprintf(buf, "ImmediateData=No");
|
||||
if (iscsi_change_param_value(buf, conn->param_list, 0) < 0) {
|
||||
iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_TARGET_ERR,
|
||||
ISCSI_LOGIN_STATUS_NO_RESOURCES);
|
||||
return -1;
|
||||
}
|
||||
|
||||
sprintf(buf, "InitialR2T=Yes");
|
||||
if (iscsi_change_param_value(buf, conn->param_list, 0) < 0) {
|
||||
iscsit_tx_login_rsp(conn, ISCSI_STATUS_CLS_TARGET_ERR,
|
||||
ISCSI_LOGIN_STATUS_NO_RESOURCES);
|
||||
return -1;
|
||||
}
|
||||
pr_debug("Forcing ImmediateData=No + InitialR2T=Yes for"
|
||||
" T10-PI enabled ISER session\n");
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
|
Загрузка…
Ссылка в новой задаче