socket: set expstatsn when we put the PDU on the wire
Signed-off-by: Peter Lieven <pl@kamp.de>
This commit is contained in:
@@ -115,9 +115,6 @@ iscsi_send_data_out(struct iscsi_context *iscsi, struct iscsi_pdu *cmd_pdu,
|
|||||||
/* ttt */
|
/* ttt */
|
||||||
iscsi_pdu_set_ttt(pdu, ttt);
|
iscsi_pdu_set_ttt(pdu, ttt);
|
||||||
|
|
||||||
/* exp statsn */
|
|
||||||
iscsi_pdu_set_expstatsn(pdu, iscsi->statsn+1);
|
|
||||||
|
|
||||||
/* data sn */
|
/* data sn */
|
||||||
iscsi_pdu_set_datasn(pdu, cmd_pdu->datasn++);
|
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;
|
pdu->cmdsn = iscsi->cmdsn;
|
||||||
iscsi->cmdsn++;
|
iscsi->cmdsn++;
|
||||||
|
|
||||||
/* exp statsn */
|
|
||||||
iscsi_pdu_set_expstatsn(pdu, iscsi->statsn+1);
|
|
||||||
|
|
||||||
/* cdb */
|
/* cdb */
|
||||||
iscsi_pdu_set_cdb(pdu, task);
|
iscsi_pdu_set_cdb(pdu, task);
|
||||||
|
|
||||||
|
|||||||
@@ -1269,9 +1269,6 @@ iscsi_logout_async(struct iscsi_context *iscsi, iscsi_command_cb cb,
|
|||||||
iscsi_pdu_set_cmdsn(pdu, iscsi->cmdsn);
|
iscsi_pdu_set_cmdsn(pdu, iscsi->cmdsn);
|
||||||
pdu->cmdsn = iscsi->cmdsn;
|
pdu->cmdsn = iscsi->cmdsn;
|
||||||
|
|
||||||
/* exp statsn */
|
|
||||||
iscsi_pdu_set_expstatsn(pdu, iscsi->statsn+1);
|
|
||||||
|
|
||||||
pdu->callback = cb;
|
pdu->callback = cb;
|
||||||
pdu->private_data = private_data;
|
pdu->private_data = private_data;
|
||||||
|
|
||||||
|
|||||||
@@ -58,9 +58,6 @@ iscsi_nop_out_async(struct iscsi_context *iscsi, iscsi_command_cb cb,
|
|||||||
iscsi_pdu_set_cmdsn(pdu, iscsi->cmdsn);
|
iscsi_pdu_set_cmdsn(pdu, iscsi->cmdsn);
|
||||||
pdu->cmdsn = iscsi->cmdsn++;
|
pdu->cmdsn = iscsi->cmdsn++;
|
||||||
|
|
||||||
/* exp statsn */
|
|
||||||
iscsi_pdu_set_expstatsn(pdu, iscsi->statsn + 1);
|
|
||||||
|
|
||||||
pdu->callback = cb;
|
pdu->callback = cb;
|
||||||
pdu->private_data = private_data;
|
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);
|
iscsi_pdu_set_cmdsn(pdu, iscsi->cmdsn);
|
||||||
pdu->cmdsn = iscsi->cmdsn;
|
pdu->cmdsn = iscsi->cmdsn;
|
||||||
|
|
||||||
/* exp statsn */
|
|
||||||
iscsi_pdu_set_expstatsn(pdu, iscsi->statsn+1);
|
|
||||||
|
|
||||||
if (iscsi_queue_pdu(iscsi, pdu) != 0) {
|
if (iscsi_queue_pdu(iscsi, pdu) != 0) {
|
||||||
iscsi_set_error(iscsi, "failed to queue iscsi nop-out pdu");
|
iscsi_set_error(iscsi, "failed to queue iscsi nop-out pdu");
|
||||||
iscsi_free_pdu(iscsi, pdu);
|
iscsi_free_pdu(iscsi, pdu);
|
||||||
|
|||||||
@@ -649,6 +649,7 @@ iscsi_write_to_socket(struct iscsi_context *iscsi)
|
|||||||
iscsi->outqueue->cmdsn, iscsi->maxcmdsn);
|
iscsi->outqueue->cmdsn, iscsi->maxcmdsn);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* pop first element of the outqueue */
|
/* pop first element of the outqueue */
|
||||||
if (iscsi_serial32_compare(iscsi->outqueue->cmdsn, iscsi->expcmdsn) < 0 &&
|
if (iscsi_serial32_compare(iscsi->outqueue->cmdsn, iscsi->expcmdsn) < 0 &&
|
||||||
(iscsi->outqueue->outdata.data[0] & 0x3f) != ISCSI_PDU_DATA_OUT) {
|
(iscsi->outqueue->outdata.data[0] & 0x3f) != ISCSI_PDU_DATA_OUT) {
|
||||||
@@ -657,6 +658,10 @@ iscsi_write_to_socket(struct iscsi_context *iscsi)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
iscsi->outqueue_current = iscsi->outqueue;
|
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);
|
ISCSI_LIST_REMOVE(&iscsi->outqueue, iscsi->outqueue_current);
|
||||||
if (!(iscsi->outqueue_current->flags & ISCSI_PDU_DELETE_WHEN_SENT)) {
|
if (!(iscsi->outqueue_current->flags & ISCSI_PDU_DELETE_WHEN_SENT)) {
|
||||||
/* we have to add the pdu to the waitqueue already here
|
/* we have to add the pdu to the waitqueue already here
|
||||||
|
|||||||
Reference in New Issue
Block a user