diff --git a/lib/iscsi-command.c b/lib/iscsi-command.c index 7877b0d..ac6b683 100644 --- a/lib/iscsi-command.c +++ b/lib/iscsi-command.c @@ -115,9 +115,6 @@ iscsi_send_data_out(struct iscsi_context *iscsi, struct iscsi_pdu *cmd_pdu, /* ttt */ iscsi_pdu_set_ttt(pdu, ttt); - /* exp statsn */ - iscsi_pdu_set_expstatsn(pdu, iscsi->statsn+1); - /* data sn */ iscsi_pdu_set_datasn(pdu, cmd_pdu->datasn++); @@ -309,9 +306,6 @@ iscsi_scsi_command_async(struct iscsi_context *iscsi, int lun, pdu->cmdsn = iscsi->cmdsn; iscsi->cmdsn++; - /* exp statsn */ - iscsi_pdu_set_expstatsn(pdu, iscsi->statsn+1); - /* cdb */ iscsi_pdu_set_cdb(pdu, task); diff --git a/lib/login.c b/lib/login.c index 835675f..381f929 100644 --- a/lib/login.c +++ b/lib/login.c @@ -1269,9 +1269,6 @@ iscsi_logout_async(struct iscsi_context *iscsi, iscsi_command_cb cb, iscsi_pdu_set_cmdsn(pdu, iscsi->cmdsn); pdu->cmdsn = iscsi->cmdsn; - /* exp statsn */ - iscsi_pdu_set_expstatsn(pdu, iscsi->statsn+1); - pdu->callback = cb; pdu->private_data = private_data; diff --git a/lib/nop.c b/lib/nop.c index 4be9211..099e410 100644 --- a/lib/nop.c +++ b/lib/nop.c @@ -58,9 +58,6 @@ iscsi_nop_out_async(struct iscsi_context *iscsi, iscsi_command_cb cb, iscsi_pdu_set_cmdsn(pdu, iscsi->cmdsn); pdu->cmdsn = iscsi->cmdsn++; - /* exp statsn */ - iscsi_pdu_set_expstatsn(pdu, iscsi->statsn + 1); - pdu->callback = cb; pdu->private_data = private_data; @@ -117,9 +114,6 @@ iscsi_send_target_nop_out(struct iscsi_context *iscsi, uint32_t ttt) iscsi_pdu_set_cmdsn(pdu, iscsi->cmdsn); pdu->cmdsn = iscsi->cmdsn; - /* exp statsn */ - iscsi_pdu_set_expstatsn(pdu, iscsi->statsn+1); - if (iscsi_queue_pdu(iscsi, pdu) != 0) { iscsi_set_error(iscsi, "failed to queue iscsi nop-out pdu"); iscsi_free_pdu(iscsi, pdu); diff --git a/lib/socket.c b/lib/socket.c index 626fca6..803917e 100644 --- a/lib/socket.c +++ b/lib/socket.c @@ -649,6 +649,7 @@ iscsi_write_to_socket(struct iscsi_context *iscsi) iscsi->outqueue->cmdsn, iscsi->maxcmdsn); return 0; } + /* pop first element of the outqueue */ if (iscsi_serial32_compare(iscsi->outqueue->cmdsn, iscsi->expcmdsn) < 0 && (iscsi->outqueue->outdata.data[0] & 0x3f) != ISCSI_PDU_DATA_OUT) { @@ -657,6 +658,10 @@ iscsi_write_to_socket(struct iscsi_context *iscsi) return -1; } iscsi->outqueue_current = iscsi->outqueue; + + /* set exp statsn */ + iscsi_pdu_set_expstatsn(iscsi->outqueue_current, iscsi->statsn + 1); + ISCSI_LIST_REMOVE(&iscsi->outqueue, iscsi->outqueue_current); if (!(iscsi->outqueue_current->flags & ISCSI_PDU_DELETE_WHEN_SENT)) { /* we have to add the pdu to the waitqueue already here