aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/target
diff options
context:
space:
mode:
authorAndy Grover <agrover@redhat.com>2012-04-03 18:51:24 -0400
committerNicholas Bellinger <nab@linux-iscsi.org>2012-04-14 20:40:38 -0400
commitebf1d95ca297a06fe760177b614646dcec06abef (patch)
tree6ee7e2c5934ff0e7cd7e30b1e02590d0b4145406 /drivers/target
parent065ca1e42ffd74dd03cf60f61cead35934c91ed5 (diff)
target/iscsi: Eliminate iscsi_cmd.data_length
Redundant, just use iscsi_cmd->se_cmd.data_length once se_cmd is initialized, or hdr->data_length before then. Signed-off-by: Andy Grover <agrover@redhat.com> Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
Diffstat (limited to 'drivers/target')
-rw-r--r--drivers/target/iscsi/iscsi_target.c25
-rw-r--r--drivers/target/iscsi/iscsi_target_core.h2
-rw-r--r--drivers/target/iscsi/iscsi_target_datain_values.c18
-rw-r--r--drivers/target/iscsi/iscsi_target_erl0.c24
-rw-r--r--drivers/target/iscsi/iscsi_target_erl1.c8
-rw-r--r--drivers/target/iscsi/iscsi_target_seq_pdu_list.c42
-rw-r--r--drivers/target/iscsi/iscsi_target_tmr.c4
-rw-r--r--drivers/target/iscsi/iscsi_target_util.c4
8 files changed, 60 insertions, 67 deletions
diff --git a/drivers/target/iscsi/iscsi_target.c b/drivers/target/iscsi/iscsi_target.c
index 1b51a3ed17f5..a29a1bb279d5 100644
--- a/drivers/target/iscsi/iscsi_target.c
+++ b/drivers/target/iscsi/iscsi_target.c
@@ -968,7 +968,6 @@ done:
968 buf, conn); 968 buf, conn);
969 969
970 cmd->data_direction = data_direction; 970 cmd->data_direction = data_direction;
971 cmd->data_length = hdr->data_length;
972 iscsi_task_attr = hdr->flags & ISCSI_FLAG_CMD_ATTR_MASK; 971 iscsi_task_attr = hdr->flags & ISCSI_FLAG_CMD_ATTR_MASK;
973 /* 972 /*
974 * Figure out the SAM Task Attribute for the incoming SCSI CDB 973 * Figure out the SAM Task Attribute for the incoming SCSI CDB
@@ -1026,7 +1025,7 @@ done:
1026 * Initialize struct se_cmd descriptor from target_core_mod infrastructure 1025 * Initialize struct se_cmd descriptor from target_core_mod infrastructure
1027 */ 1026 */
1028 transport_init_se_cmd(&cmd->se_cmd, &lio_target_fabric_configfs->tf_ops, 1027 transport_init_se_cmd(&cmd->se_cmd, &lio_target_fabric_configfs->tf_ops,
1029 conn->sess->se_sess, cmd->data_length, cmd->data_direction, 1028 conn->sess->se_sess, hdr->data_length, cmd->data_direction,
1030 sam_task_attr, &cmd->sense_buffer[0]); 1029 sam_task_attr, &cmd->sense_buffer[0]);
1031 1030
1032 pr_debug("Got SCSI Command, ITT: 0x%08x, CmdSN: 0x%08x," 1031 pr_debug("Got SCSI Command, ITT: 0x%08x, CmdSN: 0x%08x,"
@@ -1061,8 +1060,6 @@ done:
1061 */ 1060 */
1062 send_check_condition = 1; 1061 send_check_condition = 1;
1063 } else { 1062 } else {
1064 cmd->data_length = cmd->se_cmd.data_length;
1065
1066 if (iscsit_decide_list_to_build(cmd, payload_length) < 0) 1063 if (iscsit_decide_list_to_build(cmd, payload_length) < 0)
1067 return iscsit_add_reject_from_cmd( 1064 return iscsit_add_reject_from_cmd(
1068 ISCSI_REASON_BOOKMARK_NO_RESOURCES, 1065 ISCSI_REASON_BOOKMARK_NO_RESOURCES,
@@ -1329,10 +1326,10 @@ static int iscsit_handle_data_out(struct iscsi_conn *conn, unsigned char *buf)
1329 se_cmd = &cmd->se_cmd; 1326 se_cmd = &cmd->se_cmd;
1330 iscsit_mod_dataout_timer(cmd); 1327 iscsit_mod_dataout_timer(cmd);
1331 1328
1332 if ((hdr->offset + payload_length) > cmd->data_length) { 1329 if ((hdr->offset + payload_length) > cmd->se_cmd.data_length) {
1333 pr_err("DataOut Offset: %u, Length %u greater than" 1330 pr_err("DataOut Offset: %u, Length %u greater than"
1334 " iSCSI Command EDTL %u, protocol error.\n", 1331 " iSCSI Command EDTL %u, protocol error.\n",
1335 hdr->offset, payload_length, cmd->data_length); 1332 hdr->offset, payload_length, cmd->se_cmd.data_length);
1336 return iscsit_add_reject_from_cmd(ISCSI_REASON_BOOKMARK_INVALID, 1333 return iscsit_add_reject_from_cmd(ISCSI_REASON_BOOKMARK_INVALID,
1337 1, 0, buf, cmd); 1334 1, 0, buf, cmd);
1338 } 1335 }
@@ -2427,7 +2424,7 @@ static int iscsit_handle_immediate_data(
2427 2424
2428 cmd->write_data_done += length; 2425 cmd->write_data_done += length;
2429 2426
2430 if (cmd->write_data_done == cmd->data_length) { 2427 if (cmd->write_data_done == cmd->se_cmd.data_length) {
2431 spin_lock_bh(&cmd->istate_lock); 2428 spin_lock_bh(&cmd->istate_lock);
2432 cmd->cmd_flags |= ICF_GOT_LAST_DATAOUT; 2429 cmd->cmd_flags |= ICF_GOT_LAST_DATAOUT;
2433 cmd->i_state = ISTATE_RECEIVED_LAST_DATAOUT; 2430 cmd->i_state = ISTATE_RECEIVED_LAST_DATAOUT;
@@ -2559,11 +2556,11 @@ static int iscsit_send_data_in(
2559 /* 2556 /*
2560 * Be paranoid and double check the logic for now. 2557 * Be paranoid and double check the logic for now.
2561 */ 2558 */
2562 if ((datain.offset + datain.length) > cmd->data_length) { 2559 if ((datain.offset + datain.length) > cmd->se_cmd.data_length) {
2563 pr_err("Command ITT: 0x%08x, datain.offset: %u and" 2560 pr_err("Command ITT: 0x%08x, datain.offset: %u and"
2564 " datain.length: %u exceeds cmd->data_length: %u\n", 2561 " datain.length: %u exceeds cmd->data_length: %u\n",
2565 cmd->init_task_tag, datain.offset, datain.length, 2562 cmd->init_task_tag, datain.offset, datain.length,
2566 cmd->data_length); 2563 cmd->se_cmd.data_length);
2567 return -1; 2564 return -1;
2568 } 2565 }
2569 2566
@@ -3071,8 +3068,8 @@ int iscsit_build_r2ts_for_cmd(
3071 conn->sess->sess_ops->MaxBurstLength - 3068 conn->sess->sess_ops->MaxBurstLength -
3072 cmd->next_burst_len; 3069 cmd->next_burst_len;
3073 3070
3074 if (new_data_end > cmd->data_length) 3071 if (new_data_end > cmd->se_cmd.data_length)
3075 xfer_len = cmd->data_length - offset; 3072 xfer_len = cmd->se_cmd.data_length - offset;
3076 else 3073 else
3077 xfer_len = 3074 xfer_len =
3078 conn->sess->sess_ops->MaxBurstLength - 3075 conn->sess->sess_ops->MaxBurstLength -
@@ -3081,14 +3078,14 @@ int iscsit_build_r2ts_for_cmd(
3081 int new_data_end = offset + 3078 int new_data_end = offset +
3082 conn->sess->sess_ops->MaxBurstLength; 3079 conn->sess->sess_ops->MaxBurstLength;
3083 3080
3084 if (new_data_end > cmd->data_length) 3081 if (new_data_end > cmd->se_cmd.data_length)
3085 xfer_len = cmd->data_length - offset; 3082 xfer_len = cmd->se_cmd.data_length - offset;
3086 else 3083 else
3087 xfer_len = conn->sess->sess_ops->MaxBurstLength; 3084 xfer_len = conn->sess->sess_ops->MaxBurstLength;
3088 } 3085 }
3089 cmd->r2t_offset += xfer_len; 3086 cmd->r2t_offset += xfer_len;
3090 3087
3091 if (cmd->r2t_offset == cmd->data_length) 3088 if (cmd->r2t_offset == cmd->se_cmd.data_length)
3092 cmd->cmd_flags |= ICF_SENT_LAST_R2T; 3089 cmd->cmd_flags |= ICF_SENT_LAST_R2T;
3093 } else { 3090 } else {
3094 struct iscsi_seq *seq; 3091 struct iscsi_seq *seq;
diff --git a/drivers/target/iscsi/iscsi_target_core.h b/drivers/target/iscsi/iscsi_target_core.h
index 1a9a64ab4feb..94c736e3a640 100644
--- a/drivers/target/iscsi/iscsi_target_core.h
+++ b/drivers/target/iscsi/iscsi_target_core.h
@@ -380,8 +380,6 @@ struct iscsi_cmd {
380 u32 buf_ptr_size; 380 u32 buf_ptr_size;
381 /* Used to store DataDigest */ 381 /* Used to store DataDigest */
382 u32 data_crc; 382 u32 data_crc;
383 /* Total size in bytes associated with command */
384 u32 data_length;
385 /* Counter for MaxOutstandingR2T */ 383 /* Counter for MaxOutstandingR2T */
386 u32 outstanding_r2ts; 384 u32 outstanding_r2ts;
387 /* Next R2T Offset when DataSequenceInOrder=Yes */ 385 /* Next R2T Offset when DataSequenceInOrder=Yes */
diff --git a/drivers/target/iscsi/iscsi_target_datain_values.c b/drivers/target/iscsi/iscsi_target_datain_values.c
index c19ca42eac67..848fee768948 100644
--- a/drivers/target/iscsi/iscsi_target_datain_values.c
+++ b/drivers/target/iscsi/iscsi_target_datain_values.c
@@ -110,7 +110,7 @@ static struct iscsi_datain_req *iscsit_set_datain_values_yes_and_yes(
110 read_data_done = (!dr->recovery) ? 110 read_data_done = (!dr->recovery) ?
111 cmd->read_data_done : dr->read_data_done; 111 cmd->read_data_done : dr->read_data_done;
112 112
113 read_data_left = (cmd->data_length - read_data_done); 113 read_data_left = (cmd->se_cmd.data_length - read_data_done);
114 if (!read_data_left) { 114 if (!read_data_left) {
115 pr_err("ITT: 0x%08x read_data_left is zero!\n", 115 pr_err("ITT: 0x%08x read_data_left is zero!\n",
116 cmd->init_task_tag); 116 cmd->init_task_tag);
@@ -209,7 +209,7 @@ static struct iscsi_datain_req *iscsit_set_datain_values_no_and_yes(
209 seq_send_order = (!dr->recovery) ? 209 seq_send_order = (!dr->recovery) ?
210 cmd->seq_send_order : dr->seq_send_order; 210 cmd->seq_send_order : dr->seq_send_order;
211 211
212 read_data_left = (cmd->data_length - read_data_done); 212 read_data_left = (cmd->se_cmd.data_length - read_data_done);
213 if (!read_data_left) { 213 if (!read_data_left) {
214 pr_err("ITT: 0x%08x read_data_left is zero!\n", 214 pr_err("ITT: 0x%08x read_data_left is zero!\n",
215 cmd->init_task_tag); 215 cmd->init_task_tag);
@@ -228,8 +228,8 @@ static struct iscsi_datain_req *iscsit_set_datain_values_no_and_yes(
228 offset = (seq->offset + seq->next_burst_len); 228 offset = (seq->offset + seq->next_burst_len);
229 229
230 if ((offset + conn->conn_ops->MaxRecvDataSegmentLength) >= 230 if ((offset + conn->conn_ops->MaxRecvDataSegmentLength) >=
231 cmd->data_length) { 231 cmd->se_cmd.data_length) {
232 datain->length = (cmd->data_length - offset); 232 datain->length = (cmd->se_cmd.data_length - offset);
233 datain->offset = offset; 233 datain->offset = offset;
234 234
235 datain->flags |= ISCSI_FLAG_CMD_FINAL; 235 datain->flags |= ISCSI_FLAG_CMD_FINAL;
@@ -261,7 +261,7 @@ static struct iscsi_datain_req *iscsit_set_datain_values_no_and_yes(
261 } 261 }
262 } 262 }
263 263
264 if ((read_data_done + datain->length) == cmd->data_length) 264 if ((read_data_done + datain->length) == cmd->se_cmd.data_length)
265 datain->flags |= ISCSI_FLAG_DATA_STATUS; 265 datain->flags |= ISCSI_FLAG_DATA_STATUS;
266 266
267 datain->data_sn = (!dr->recovery) ? cmd->data_sn++ : dr->data_sn++; 267 datain->data_sn = (!dr->recovery) ? cmd->data_sn++ : dr->data_sn++;
@@ -330,7 +330,7 @@ static struct iscsi_datain_req *iscsit_set_datain_values_yes_and_no(
330 read_data_done = (!dr->recovery) ? 330 read_data_done = (!dr->recovery) ?
331 cmd->read_data_done : dr->read_data_done; 331 cmd->read_data_done : dr->read_data_done;
332 332
333 read_data_left = (cmd->data_length - read_data_done); 333 read_data_left = (cmd->se_cmd.data_length - read_data_done);
334 if (!read_data_left) { 334 if (!read_data_left) {
335 pr_err("ITT: 0x%08x read_data_left is zero!\n", 335 pr_err("ITT: 0x%08x read_data_left is zero!\n",
336 cmd->init_task_tag); 336 cmd->init_task_tag);
@@ -341,7 +341,7 @@ static struct iscsi_datain_req *iscsit_set_datain_values_yes_and_no(
341 if (!pdu) 341 if (!pdu)
342 return dr; 342 return dr;
343 343
344 if ((read_data_done + pdu->length) == cmd->data_length) { 344 if ((read_data_done + pdu->length) == cmd->se_cmd.data_length) {
345 pdu->flags |= (ISCSI_FLAG_CMD_FINAL | ISCSI_FLAG_DATA_STATUS); 345 pdu->flags |= (ISCSI_FLAG_CMD_FINAL | ISCSI_FLAG_DATA_STATUS);
346 if (conn->sess->sess_ops->ErrorRecoveryLevel > 0) 346 if (conn->sess->sess_ops->ErrorRecoveryLevel > 0)
347 pdu->flags |= ISCSI_FLAG_DATA_ACK; 347 pdu->flags |= ISCSI_FLAG_DATA_ACK;
@@ -430,7 +430,7 @@ static struct iscsi_datain_req *iscsit_set_datain_values_no_and_no(
430 seq_send_order = (!dr->recovery) ? 430 seq_send_order = (!dr->recovery) ?
431 cmd->seq_send_order : dr->seq_send_order; 431 cmd->seq_send_order : dr->seq_send_order;
432 432
433 read_data_left = (cmd->data_length - read_data_done); 433 read_data_left = (cmd->se_cmd.data_length - read_data_done);
434 if (!read_data_left) { 434 if (!read_data_left) {
435 pr_err("ITT: 0x%08x read_data_left is zero!\n", 435 pr_err("ITT: 0x%08x read_data_left is zero!\n",
436 cmd->init_task_tag); 436 cmd->init_task_tag);
@@ -460,7 +460,7 @@ static struct iscsi_datain_req *iscsit_set_datain_values_no_and_no(
460 } else 460 } else
461 seq->next_burst_len += pdu->length; 461 seq->next_burst_len += pdu->length;
462 462
463 if ((read_data_done + pdu->length) == cmd->data_length) 463 if ((read_data_done + pdu->length) == cmd->se_cmd.data_length)
464 pdu->flags |= ISCSI_FLAG_DATA_STATUS; 464 pdu->flags |= ISCSI_FLAG_DATA_STATUS;
465 465
466 pdu->data_sn = (!dr->recovery) ? cmd->data_sn++ : dr->data_sn++; 466 pdu->data_sn = (!dr->recovery) ? cmd->data_sn++ : dr->data_sn++;
diff --git a/drivers/target/iscsi/iscsi_target_erl0.c b/drivers/target/iscsi/iscsi_target_erl0.c
index dd11520eb8b4..1a02016ecdab 100644
--- a/drivers/target/iscsi/iscsi_target_erl0.c
+++ b/drivers/target/iscsi/iscsi_target_erl0.c
@@ -48,9 +48,9 @@ void iscsit_set_dataout_sequence_values(
48 if (cmd->unsolicited_data) { 48 if (cmd->unsolicited_data) {
49 cmd->seq_start_offset = cmd->write_data_done; 49 cmd->seq_start_offset = cmd->write_data_done;
50 cmd->seq_end_offset = (cmd->write_data_done + 50 cmd->seq_end_offset = (cmd->write_data_done +
51 (cmd->data_length > 51 (cmd->se_cmd.data_length >
52 conn->sess->sess_ops->FirstBurstLength) ? 52 conn->sess->sess_ops->FirstBurstLength) ?
53 conn->sess->sess_ops->FirstBurstLength : cmd->data_length); 53 conn->sess->sess_ops->FirstBurstLength : cmd->se_cmd.data_length);
54 return; 54 return;
55 } 55 }
56 56
@@ -59,15 +59,15 @@ void iscsit_set_dataout_sequence_values(
59 59
60 if (!cmd->seq_start_offset && !cmd->seq_end_offset) { 60 if (!cmd->seq_start_offset && !cmd->seq_end_offset) {
61 cmd->seq_start_offset = cmd->write_data_done; 61 cmd->seq_start_offset = cmd->write_data_done;
62 cmd->seq_end_offset = (cmd->data_length > 62 cmd->seq_end_offset = (cmd->se_cmd.data_length >
63 conn->sess->sess_ops->MaxBurstLength) ? 63 conn->sess->sess_ops->MaxBurstLength) ?
64 (cmd->write_data_done + 64 (cmd->write_data_done +
65 conn->sess->sess_ops->MaxBurstLength) : cmd->data_length; 65 conn->sess->sess_ops->MaxBurstLength) : cmd->se_cmd.data_length;
66 } else { 66 } else {
67 cmd->seq_start_offset = cmd->seq_end_offset; 67 cmd->seq_start_offset = cmd->seq_end_offset;
68 cmd->seq_end_offset = ((cmd->seq_end_offset + 68 cmd->seq_end_offset = ((cmd->seq_end_offset +
69 conn->sess->sess_ops->MaxBurstLength) >= 69 conn->sess->sess_ops->MaxBurstLength) >=
70 cmd->data_length) ? cmd->data_length : 70 cmd->se_cmd.data_length) ? cmd->se_cmd.data_length :
71 (cmd->seq_end_offset + 71 (cmd->seq_end_offset +
72 conn->sess->sess_ops->MaxBurstLength); 72 conn->sess->sess_ops->MaxBurstLength);
73 } 73 }
@@ -182,13 +182,13 @@ static int iscsit_dataout_check_unsolicited_sequence(
182 if (!conn->sess->sess_ops->DataPDUInOrder) 182 if (!conn->sess->sess_ops->DataPDUInOrder)
183 goto out; 183 goto out;
184 184
185 if ((first_burst_len != cmd->data_length) && 185 if ((first_burst_len != cmd->se_cmd.data_length) &&
186 (first_burst_len != conn->sess->sess_ops->FirstBurstLength)) { 186 (first_burst_len != conn->sess->sess_ops->FirstBurstLength)) {
187 pr_err("Unsolicited non-immediate data" 187 pr_err("Unsolicited non-immediate data"
188 " received %u does not equal FirstBurstLength: %u, and" 188 " received %u does not equal FirstBurstLength: %u, and"
189 " does not equal ExpXferLen %u.\n", first_burst_len, 189 " does not equal ExpXferLen %u.\n", first_burst_len,
190 conn->sess->sess_ops->FirstBurstLength, 190 conn->sess->sess_ops->FirstBurstLength,
191 cmd->data_length); 191 cmd->se_cmd.data_length);
192 transport_send_check_condition_and_sense(&cmd->se_cmd, 192 transport_send_check_condition_and_sense(&cmd->se_cmd,
193 TCM_INCORRECT_AMOUNT_OF_DATA, 0); 193 TCM_INCORRECT_AMOUNT_OF_DATA, 0);
194 return DATAOUT_CANNOT_RECOVER; 194 return DATAOUT_CANNOT_RECOVER;
@@ -201,10 +201,10 @@ static int iscsit_dataout_check_unsolicited_sequence(
201 conn->sess->sess_ops->FirstBurstLength); 201 conn->sess->sess_ops->FirstBurstLength);
202 return DATAOUT_CANNOT_RECOVER; 202 return DATAOUT_CANNOT_RECOVER;
203 } 203 }
204 if (first_burst_len == cmd->data_length) { 204 if (first_burst_len == cmd->se_cmd.data_length) {
205 pr_err("Command ITT: 0x%08x reached" 205 pr_err("Command ITT: 0x%08x reached"
206 " ExpXferLen: %u, but ISCSI_FLAG_CMD_FINAL is not set. protocol" 206 " ExpXferLen: %u, but ISCSI_FLAG_CMD_FINAL is not set. protocol"
207 " error.\n", cmd->init_task_tag, cmd->data_length); 207 " error.\n", cmd->init_task_tag, cmd->se_cmd.data_length);
208 return DATAOUT_CANNOT_RECOVER; 208 return DATAOUT_CANNOT_RECOVER;
209 } 209 }
210 } 210 }
@@ -294,7 +294,7 @@ static int iscsit_dataout_check_sequence(
294 if ((next_burst_len < 294 if ((next_burst_len <
295 conn->sess->sess_ops->MaxBurstLength) && 295 conn->sess->sess_ops->MaxBurstLength) &&
296 ((cmd->write_data_done + payload_length) < 296 ((cmd->write_data_done + payload_length) <
297 cmd->data_length)) { 297 cmd->se_cmd.data_length)) {
298 pr_err("Command ITT: 0x%08x set ISCSI_FLAG_CMD_FINAL" 298 pr_err("Command ITT: 0x%08x set ISCSI_FLAG_CMD_FINAL"
299 " before end of DataOUT sequence, protocol" 299 " before end of DataOUT sequence, protocol"
300 " error.\n", cmd->init_task_tag); 300 " error.\n", cmd->init_task_tag);
@@ -319,7 +319,7 @@ static int iscsit_dataout_check_sequence(
319 return DATAOUT_CANNOT_RECOVER; 319 return DATAOUT_CANNOT_RECOVER;
320 } 320 }
321 if ((cmd->write_data_done + payload_length) == 321 if ((cmd->write_data_done + payload_length) ==
322 cmd->data_length) { 322 cmd->se_cmd.data_length) {
323 pr_err("Command ITT: 0x%08x reached" 323 pr_err("Command ITT: 0x%08x reached"
324 " last DataOUT PDU in sequence but ISCSI_FLAG_" 324 " last DataOUT PDU in sequence but ISCSI_FLAG_"
325 "CMD_FINAL is not set, protocol error.\n", 325 "CMD_FINAL is not set, protocol error.\n",
@@ -640,7 +640,7 @@ static int iscsit_dataout_post_crc_passed(
640 640
641 cmd->write_data_done += payload_length; 641 cmd->write_data_done += payload_length;
642 642
643 if (cmd->write_data_done == cmd->data_length) 643 if (cmd->write_data_done == cmd->se_cmd.data_length)
644 return DATAOUT_SEND_TO_TRANSPORT; 644 return DATAOUT_SEND_TO_TRANSPORT;
645 else if (send_r2t) 645 else if (send_r2t)
646 return DATAOUT_SEND_R2T; 646 return DATAOUT_SEND_R2T;
diff --git a/drivers/target/iscsi/iscsi_target_erl1.c b/drivers/target/iscsi/iscsi_target_erl1.c
index 6deb8495d5f2..ecdd46deedda 100644
--- a/drivers/target/iscsi/iscsi_target_erl1.c
+++ b/drivers/target/iscsi/iscsi_target_erl1.c
@@ -1116,8 +1116,8 @@ static int iscsit_set_dataout_timeout_values(
1116 if (cmd->unsolicited_data) { 1116 if (cmd->unsolicited_data) {
1117 *offset = 0; 1117 *offset = 0;
1118 *length = (conn->sess->sess_ops->FirstBurstLength > 1118 *length = (conn->sess->sess_ops->FirstBurstLength >
1119 cmd->data_length) ? 1119 cmd->se_cmd.data_length) ?
1120 cmd->data_length : 1120 cmd->se_cmd.data_length :
1121 conn->sess->sess_ops->FirstBurstLength; 1121 conn->sess->sess_ops->FirstBurstLength;
1122 return 0; 1122 return 0;
1123 } 1123 }
@@ -1188,8 +1188,8 @@ static void iscsit_handle_dataout_timeout(unsigned long data)
1188 if (conn->sess->sess_ops->DataPDUInOrder) { 1188 if (conn->sess->sess_ops->DataPDUInOrder) {
1189 pdu_offset = cmd->write_data_done; 1189 pdu_offset = cmd->write_data_done;
1190 if ((pdu_offset + (conn->sess->sess_ops->MaxBurstLength - 1190 if ((pdu_offset + (conn->sess->sess_ops->MaxBurstLength -
1191 cmd->next_burst_len)) > cmd->data_length) 1191 cmd->next_burst_len)) > cmd->se_cmd.data_length)
1192 pdu_length = (cmd->data_length - 1192 pdu_length = (cmd->se_cmd.data_length -
1193 cmd->write_data_done); 1193 cmd->write_data_done);
1194 else 1194 else
1195 pdu_length = (conn->sess->sess_ops->MaxBurstLength - 1195 pdu_length = (conn->sess->sess_ops->MaxBurstLength -
diff --git a/drivers/target/iscsi/iscsi_target_seq_pdu_list.c b/drivers/target/iscsi/iscsi_target_seq_pdu_list.c
index c69c7577ad14..d98276581a19 100644
--- a/drivers/target/iscsi/iscsi_target_seq_pdu_list.c
+++ b/drivers/target/iscsi/iscsi_target_seq_pdu_list.c
@@ -226,11 +226,10 @@ static void iscsit_determine_counts_for_list(
226 226
227 if ((bl->type == PDULIST_UNSOLICITED) || 227 if ((bl->type == PDULIST_UNSOLICITED) ||
228 (bl->type == PDULIST_IMMEDIATE_AND_UNSOLICITED)) 228 (bl->type == PDULIST_IMMEDIATE_AND_UNSOLICITED))
229 unsolicited_data_length = (cmd->data_length > 229 unsolicited_data_length = min(cmd->se_cmd.data_length,
230 conn->sess->sess_ops->FirstBurstLength) ? 230 conn->sess->sess_ops->FirstBurstLength);
231 conn->sess->sess_ops->FirstBurstLength : cmd->data_length;
232 231
233 while (offset < cmd->data_length) { 232 while (offset < cmd->se_cmd.data_length) {
234 *pdu_count += 1; 233 *pdu_count += 1;
235 234
236 if (check_immediate) { 235 if (check_immediate) {
@@ -244,10 +243,10 @@ static void iscsit_determine_counts_for_list(
244 } 243 }
245 if (unsolicited_data_length > 0) { 244 if (unsolicited_data_length > 0) {
246 if ((offset + conn->conn_ops->MaxRecvDataSegmentLength) 245 if ((offset + conn->conn_ops->MaxRecvDataSegmentLength)
247 >= cmd->data_length) { 246 >= cmd->se_cmd.data_length) {
248 unsolicited_data_length -= 247 unsolicited_data_length -=
249 (cmd->data_length - offset); 248 (cmd->se_cmd.data_length - offset);
250 offset += (cmd->data_length - offset); 249 offset += (cmd->se_cmd.data_length - offset);
251 continue; 250 continue;
252 } 251 }
253 if ((offset + conn->conn_ops->MaxRecvDataSegmentLength) 252 if ((offset + conn->conn_ops->MaxRecvDataSegmentLength)
@@ -268,8 +267,8 @@ static void iscsit_determine_counts_for_list(
268 continue; 267 continue;
269 } 268 }
270 if ((offset + conn->conn_ops->MaxRecvDataSegmentLength) >= 269 if ((offset + conn->conn_ops->MaxRecvDataSegmentLength) >=
271 cmd->data_length) { 270 cmd->se_cmd.data_length) {
272 offset += (cmd->data_length - offset); 271 offset += (cmd->se_cmd.data_length - offset);
273 continue; 272 continue;
274 } 273 }
275 if ((burstlength + conn->conn_ops->MaxRecvDataSegmentLength) >= 274 if ((burstlength + conn->conn_ops->MaxRecvDataSegmentLength) >=
@@ -311,11 +310,10 @@ static int iscsit_build_pdu_and_seq_list(
311 310
312 if ((bl->type == PDULIST_UNSOLICITED) || 311 if ((bl->type == PDULIST_UNSOLICITED) ||
313 (bl->type == PDULIST_IMMEDIATE_AND_UNSOLICITED)) 312 (bl->type == PDULIST_IMMEDIATE_AND_UNSOLICITED))
314 unsolicited_data_length = (cmd->data_length > 313 unsolicited_data_length = min(cmd->se_cmd.data_length,
315 conn->sess->sess_ops->FirstBurstLength) ? 314 conn->sess->sess_ops->FirstBurstLength);
316 conn->sess->sess_ops->FirstBurstLength : cmd->data_length;
317 315
318 while (offset < cmd->data_length) { 316 while (offset < cmd->se_cmd.data_length) {
319 pdu_count++; 317 pdu_count++;
320 if (!datapduinorder) { 318 if (!datapduinorder) {
321 pdu[i].offset = offset; 319 pdu[i].offset = offset;
@@ -351,21 +349,21 @@ static int iscsit_build_pdu_and_seq_list(
351 if (unsolicited_data_length > 0) { 349 if (unsolicited_data_length > 0) {
352 if ((offset + 350 if ((offset +
353 conn->conn_ops->MaxRecvDataSegmentLength) >= 351 conn->conn_ops->MaxRecvDataSegmentLength) >=
354 cmd->data_length) { 352 cmd->se_cmd.data_length) {
355 if (!datapduinorder) { 353 if (!datapduinorder) {
356 pdu[i].type = PDUTYPE_UNSOLICITED; 354 pdu[i].type = PDUTYPE_UNSOLICITED;
357 pdu[i].length = 355 pdu[i].length =
358 (cmd->data_length - offset); 356 (cmd->se_cmd.data_length - offset);
359 } 357 }
360 if (!datasequenceinorder) { 358 if (!datasequenceinorder) {
361 seq[seq_no].type = SEQTYPE_UNSOLICITED; 359 seq[seq_no].type = SEQTYPE_UNSOLICITED;
362 seq[seq_no].pdu_count = pdu_count; 360 seq[seq_no].pdu_count = pdu_count;
363 seq[seq_no].xfer_len = (burstlength + 361 seq[seq_no].xfer_len = (burstlength +
364 (cmd->data_length - offset)); 362 (cmd->se_cmd.data_length - offset));
365 } 363 }
366 unsolicited_data_length -= 364 unsolicited_data_length -=
367 (cmd->data_length - offset); 365 (cmd->se_cmd.data_length - offset);
368 offset += (cmd->data_length - offset); 366 offset += (cmd->se_cmd.data_length - offset);
369 continue; 367 continue;
370 } 368 }
371 if ((offset + 369 if ((offset +
@@ -407,18 +405,18 @@ static int iscsit_build_pdu_and_seq_list(
407 continue; 405 continue;
408 } 406 }
409 if ((offset + conn->conn_ops->MaxRecvDataSegmentLength) >= 407 if ((offset + conn->conn_ops->MaxRecvDataSegmentLength) >=
410 cmd->data_length) { 408 cmd->se_cmd.data_length) {
411 if (!datapduinorder) { 409 if (!datapduinorder) {
412 pdu[i].type = PDUTYPE_NORMAL; 410 pdu[i].type = PDUTYPE_NORMAL;
413 pdu[i].length = (cmd->data_length - offset); 411 pdu[i].length = (cmd->se_cmd.data_length - offset);
414 } 412 }
415 if (!datasequenceinorder) { 413 if (!datasequenceinorder) {
416 seq[seq_no].type = SEQTYPE_NORMAL; 414 seq[seq_no].type = SEQTYPE_NORMAL;
417 seq[seq_no].pdu_count = pdu_count; 415 seq[seq_no].pdu_count = pdu_count;
418 seq[seq_no].xfer_len = (burstlength + 416 seq[seq_no].xfer_len = (burstlength +
419 (cmd->data_length - offset)); 417 (cmd->se_cmd.data_length - offset));
420 } 418 }
421 offset += (cmd->data_length - offset); 419 offset += (cmd->se_cmd.data_length - offset);
422 continue; 420 continue;
423 } 421 }
424 if ((burstlength + conn->conn_ops->MaxRecvDataSegmentLength) >= 422 if ((burstlength + conn->conn_ops->MaxRecvDataSegmentLength) >=
diff --git a/drivers/target/iscsi/iscsi_target_tmr.c b/drivers/target/iscsi/iscsi_target_tmr.c
index 3f025fa10467..f4e640b51fd1 100644
--- a/drivers/target/iscsi/iscsi_target_tmr.c
+++ b/drivers/target/iscsi/iscsi_target_tmr.c
@@ -269,9 +269,9 @@ static int iscsit_task_reassign_complete_write(
269 offset = cmd->next_burst_len = cmd->write_data_done; 269 offset = cmd->next_burst_len = cmd->write_data_done;
270 270
271 if ((conn->sess->sess_ops->FirstBurstLength - offset) >= 271 if ((conn->sess->sess_ops->FirstBurstLength - offset) >=
272 cmd->data_length) { 272 cmd->se_cmd.data_length) {
273 no_build_r2ts = 1; 273 no_build_r2ts = 1;
274 length = (cmd->data_length - offset); 274 length = (cmd->se_cmd.data_length - offset);
275 } else 275 } else
276 length = (conn->sess->sess_ops->FirstBurstLength - offset); 276 length = (conn->sess->sess_ops->FirstBurstLength - offset);
277 277
diff --git a/drivers/target/iscsi/iscsi_target_util.c b/drivers/target/iscsi/iscsi_target_util.c
index 66a6e9ba86fe..1f5a456f26b4 100644
--- a/drivers/target/iscsi/iscsi_target_util.c
+++ b/drivers/target/iscsi/iscsi_target_util.c
@@ -379,14 +379,14 @@ int iscsit_check_unsolicited_dataout(struct iscsi_cmd *cmd, unsigned char *buf)
379 if (!(hdr->flags & ISCSI_FLAG_CMD_FINAL)) 379 if (!(hdr->flags & ISCSI_FLAG_CMD_FINAL))
380 return 0; 380 return 0;
381 381
382 if (((cmd->first_burst_len + payload_length) != cmd->data_length) && 382 if (((cmd->first_burst_len + payload_length) != cmd->se_cmd.data_length) &&
383 ((cmd->first_burst_len + payload_length) != 383 ((cmd->first_burst_len + payload_length) !=
384 conn->sess->sess_ops->FirstBurstLength)) { 384 conn->sess->sess_ops->FirstBurstLength)) {
385 pr_err("Unsolicited non-immediate data received %u" 385 pr_err("Unsolicited non-immediate data received %u"
386 " does not equal FirstBurstLength: %u, and does" 386 " does not equal FirstBurstLength: %u, and does"
387 " not equal ExpXferLen %u.\n", 387 " not equal ExpXferLen %u.\n",
388 (cmd->first_burst_len + payload_length), 388 (cmd->first_burst_len + payload_length),
389 conn->sess->sess_ops->FirstBurstLength, cmd->data_length); 389 conn->sess->sess_ops->FirstBurstLength, cmd->se_cmd.data_length);
390 transport_send_check_condition_and_sense(se_cmd, 390 transport_send_check_condition_and_sense(se_cmd,
391 TCM_INCORRECT_AMOUNT_OF_DATA, 0); 391 TCM_INCORRECT_AMOUNT_OF_DATA, 0);
392 return -1; 392 return -1;