On 07/23/2009 05:20 AM, Boaz Harrosh wrote:
> On 07/23/2009 12:24 PM, Mike Christie wrote:
>> But you still might be hitting a problem where the target does not like
>> data-outs when it closed the window. Maybe they interpreted the RFC
>> differently. You should ask the HP target guys for more info.
>> Also your patch might be working because I think it ends up throttling
>> the connection, so IO does not timeout because pipes are backed up (the
>> slow down from the throttling is one of the problems we hit with the
>> patch I did before which was pretty much the same as you posted).
> I think that what Hannes patch is doing is exactly that off-by-one command.
> So maybe you are right and it is an HP bug where the window check is
> off-by-one or they do not like data-outs after window close.
> Try to compare less-one in queuecommand and see if it helps the same?

Hannes, did you try this?  I am attaching a patch that should give you 
this behavior. It should do the same as checking the session->cmdsn in 
iscsi_task_xmit where the cmdsn is already incremented so we end up not 
sending a task with cmdsn == maxcmdsn.

You received this message because you are subscribed to the Google Groups 
"open-iscsi" group.
To post to this group, send email to open-iscsi@googlegroups.com
To unsubscribe from this group, send email to 
For more options, visit this group at http://groups.google.com/group/open-iscsi

diff --git a/drivers/message/fusion/mptsas.c b/drivers/message/fusion/mptsas.c
index 55ff252..7324aa5 100644
--- a/drivers/message/fusion/mptsas.c
+++ b/drivers/message/fusion/mptsas.c
diff --git a/drivers/scsi/libiscsi.c b/drivers/scsi/libiscsi.c
index 98df30b..2d4ee28 100644
--- a/drivers/scsi/libiscsi.c
+++ b/drivers/scsi/libiscsi.c
@@ -1265,7 +1271,7 @@ static int iscsi_check_cmdsn_window_closed(struct 
iscsi_conn *conn)
         * Check for iSCSI window and take care of CmdSN wrap-around
-       if (!iscsi_sna_lte(session->queued_cmdsn, session->max_cmdsn)) {
+       if (!iscsi_sna_lt(session->queued_cmdsn, session->max_cmdsn)) {
                ISCSI_DBG_SESSION(session, "iSCSI CmdSN closed. ExpCmdSn "
                                  "%u MaxCmdSN %u CmdSN %u/%u\n",
                                  session->exp_cmdsn, session->max_cmdsn,

Reply via email to