Fix how we negotiate IMMEDIATE_DATA. It defaults to YES and is negotiated

unless one side said NO
This commit is contained in:
Ronnie Sahlberg
2012-12-01 11:21:24 -08:00
parent 04970ef95e
commit 56707bcdf9
2 changed files with 7 additions and 0 deletions
+1
View File
@@ -512,6 +512,7 @@ iscsi_set_immediate_data(struct iscsi_context *iscsi, enum iscsi_immediate_data
} }
iscsi->want_immediate_data = immediate_data; iscsi->want_immediate_data = immediate_data;
iscsi->use_immediate_data = immediate_data;
return 0; return 0;
} }
+6
View File
@@ -1007,6 +1007,12 @@ iscsi_process_login_reply(struct iscsi_context *iscsi, struct iscsi_pdu *pdu,
if (!strncmp(ptr, "ImmediateData=", 14)) { if (!strncmp(ptr, "ImmediateData=", 14)) {
if (!strcmp(ptr + 14, "No")) { if (!strcmp(ptr + 14, "No")) {
iscsi->use_immediate_data = ISCSI_IMMEDIATE_DATA_NO; iscsi->use_immediate_data = ISCSI_IMMEDIATE_DATA_NO;
} else if (iscsi->want_immediate_data == ISCSI_IMMEDIATE_DATA_NO) {
/* If we negotiated NO, it doesnt matter what
* the target said. ImmediateData is NO.
*/
iscsi->use_immediate_data = ISCSI_IMMEDIATE_DATA_NO;
} else { } else {
iscsi->use_immediate_data = ISCSI_IMMEDIATE_DATA_YES; iscsi->use_immediate_data = ISCSI_IMMEDIATE_DATA_YES;
} }