|
@@ -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;
|