Mike Christie wrote:
> Hey Hannes,
> 
> Do you only need this patch with your cmdsn patch?
> 
> The code below is a leftover from when I had the cmdsn check in 
> iscsi_datra_xmit. I am not sure why we would need to wake the xmit 
> thread. The reasons I have:
> 
> 1. queuecommand or __iscsi_conn_send_pdu adds new task.
> 2. sendpage returns -EAGAIN. For this iscsi_tcp should call wake the 
> xmit thread from write_space right? Is there another error sendpage 
> could throw where write_space is not called like maybe a connection problem?
> 3. xmit thread was suspended for eh purposes.
> 

Oh yeah, if it is somethimg like above, then the window can be open or 
closed or there might not even be any commands in flight, so maybe we 
should add a queue_work in iscsi_complete_pdu and a add a queue_delayed 
in iscsi_data_xmit if there is no commands in flight.

But let me know when we are hitting it so we can figure out how to best 
handle it.


> With your cmdsn patch
> 4. If you return from iscsi_data_xmit because you think the window is 
> closed. Did you try the queued_cmdsn lt vs lte patch, or heard back from 
> the hp guys about their handling of data-outs when the window is closed btw?
> 
> 
> Hannes Reinecke wrote:
>> There is another issue leading to an I/O stall:
>> when there is a command pending to be retried, ie conn->task is set after
>> we exit xmitworker(), the next incoming PDU will not trigger the
>> xmit thread as the queues might be empty, although a command is still
>> pending.
>>
>> Try this:
>> diff --git a/drivers/scsi/libiscsi.c b/drivers/scsi/libiscsi.c
>> index 716cc34..4493cd4 100644
>> --- a/drivers/scsi/libiscsi.c
>> +++ b/drivers/scsi/libiscsi.c
>> @@ -133,9 +133,7 @@ iscsi_update_cmdsn(struct iscsi_session *session, struct 
>> iscsi_
>> nopin *hdr)
>>                  * if the window closed with IO queued, then kick the
>>                  * xmit thread
>>                  */
>> -               if (!list_empty(&session->leadconn->cmdqueue) ||
>> -                   !list_empty(&session->leadconn->mgmtqueue))
>> -                       iscsi_conn_queue_work(session->leadconn);
>> +               iscsi_conn_queue_work(session->leadconn);
>>         }
>>  }
>>  EXPORT_SYMBOL_GPL(iscsi_update_cmdsn);
>>
>> Cheers,
>>
>> Hannes
> 
> 
> > 


--~--~---------~--~----~------------~-------~--~----~
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 
open-iscsi+unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/open-iscsi
-~----------~----~----~----~------~----~------~--~---

Reply via email to