From 14bee1007f025dc033e277b763e537f67616f4cc Mon Sep 17 00:00:00 2001 From: Peter Lieven Date: Thu, 29 Nov 2012 15:17:30 +0100 Subject: [PATCH] RECONNECT do not increase CmdSN for immediate PDUs Immediate PDUs such as queued NOP-Outs will cause a protocol error on reconnect. Signed-off-by: Peter Lieven --- lib/connect.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/connect.c b/lib/connect.c index d52baad..fd4c97b 100644 --- a/lib/connect.c +++ b/lib/connect.c @@ -282,7 +282,9 @@ try_again: pdu->itt = iscsi_itt_post_increment(iscsi); iscsi_pdu_set_itt(pdu, pdu->itt); - pdu->cmdsn = iscsi->cmdsn++; + /* do not increase cmdsn for PDUs marked for immediate delivery + * this will result in a protocol error */ + pdu->cmdsn = (pdu->outdata.data[0] & ISCSI_PDU_IMMEDIATE)?iscsi->cmdsn:iscsi->cmdsn++; iscsi_pdu_set_cmdsn(pdu, pdu->cmdsn); iscsi_pdu_set_expstatsn(pdu, iscsi->statsn); @@ -312,7 +314,9 @@ try_again: pdu->itt = iscsi_itt_post_increment(iscsi); iscsi_pdu_set_itt(pdu, pdu->itt); - pdu->cmdsn = iscsi->cmdsn++; + /* do not increase cmdsn for PDUs marked for immediate delivery + * this will result in a protocol error */ + pdu->cmdsn = (pdu->outdata.data[0] & ISCSI_PDU_IMMEDIATE)?iscsi->cmdsn:iscsi->cmdsn++; iscsi_pdu_set_cmdsn(pdu, pdu->cmdsn); iscsi_pdu_set_expstatsn(pdu, iscsi->statsn);