DATASN: We have to increment DATASN in each DATA-OUT PDU in a sequence.

For writes that span across multiple DATA-OUT segments we have to
increment the DATASN field for each segment.
We didnt use to, and most targets were perfectly happy, ignoring that the DATASN was constant 0 for every DATAOUT we sent.
LIO however does check this and did cause it to reject the libiscsi test tool.
(This is something we should write a iscsi test for  so we can flag all non-LIO targets as broken and needing to be fixed)

Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
This commit is contained in:
Ronnie Sahlberg
2012-08-01 13:30:13 +10:00
parent 2a15e39460
commit 1f98c40edf
2 changed files with 2 additions and 1 deletions

View File

@@ -182,6 +182,7 @@ struct iscsi_pdu {
uint32_t lun;
uint32_t itt;
uint32_t cmdsn;
uint32_t datasn;
enum iscsi_opcode response_opcode;
iscsi_command_cb callback;

View File

@@ -120,7 +120,7 @@ iscsi_send_data_out(struct iscsi_context *iscsi, struct iscsi_pdu *cmd_pdu,
iscsi_pdu_set_expstatsn(pdu, iscsi->statsn+1);
/* data sn */
iscsi_pdu_set_datasn(pdu, 0);
iscsi_pdu_set_datasn(pdu, cmd_pdu->datasn++);
/* buffer offset */
iscsi_pdu_set_bufferoffset(pdu, offset);