iscsi-command.c: Better fix for the length bug for immediatedata

Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
This commit is contained in:
Ronnie Sahlberg
2015-02-16 17:36:58 -08:00
parent db7924fc90
commit 8ae706630e

View File

@@ -326,13 +326,13 @@ iscsi_scsi_command_async(struct iscsi_context *iscsi, int lun,
* subtract from first_burst_length. * subtract from first_burst_length.
*/ */
if (!(flags & ISCSI_PDU_SCSI_FINAL)) { if (!(flags & ISCSI_PDU_SCSI_FINAL)) {
uint32_t len = task->expxferlen; uint32_t len = task->expxferlen - pdu->payload_len;
if (len + pdu->payload_len > iscsi->first_burst_length) { if (len > iscsi->first_burst_length) {
len = iscsi->first_burst_length - pdu->payload_len; len = iscsi->first_burst_length;
} }
iscsi_send_data_out(iscsi, pdu, 0xffffffff, iscsi_send_data_out(iscsi, pdu, 0xffffffff,
pdu->payload_len, len - pdu->payload_len); pdu->payload_len, len);
} }
/* remember cmdsn and itt so we can use task management */ /* remember cmdsn and itt so we can use task management */