diff --git a/lib/iscsi-command.c b/lib/iscsi-command.c index 3c85da7..a97dc46 100644 --- a/lib/iscsi-command.c +++ b/lib/iscsi-command.c @@ -207,6 +207,7 @@ iscsi_scsi_command_async(struct iscsi_context *iscsi, int lun, if (len > iscsi->first_burst_length) { len = iscsi->first_burst_length; + flags &= ~ISCSI_PDU_SCSI_FINAL; } pdu->out_offset = 0; @@ -253,8 +254,11 @@ iscsi_scsi_command_async(struct iscsi_context *iscsi, int lun, } /* Can we send some unsolicited data ? */ - if (pdu->out_len != 0 && iscsi->use_initial_r2t == ISCSI_INITIAL_R2T_NO && iscsi->use_immediate_data == ISCSI_IMMEDIATE_DATA_NO) { - uint32_t len = task->expxferlen - pdu->out_len; + if (task->xfer_dir == SCSI_XFER_WRITE + && iscsi->use_initial_r2t == ISCSI_INITIAL_R2T_NO + && iscsi->use_immediate_data == ISCSI_IMMEDIATE_DATA_NO) { + + uint32_t len = task->expxferlen; if (len > iscsi->first_burst_length) { len = iscsi->first_burst_length;