Hannes Reinecke wrote:
> 
> If 'fast_abort' is not set we should be sending all outstanding
> Data-out PDUs to the target, even after we have received the
> tmf response. So we should make sure that the workqueue is really
> flushed and all PDUs have been processed before setting the
> 'SUSPEND' bit.

I tried to say this in the previous mails. Let me know if you are also 
disagreeing with this or maybe just missed it.

iscsi_tcp, iser and cxgb3i can return from xmit_task when some buffer or 
window closes. It can do this at any time, and it could leave a partial 
pdu sent or if we are still trying to send all the data-outs for a 
sequence then it could get stuck in the middle of that.

Instead of suspend_tx, I think we have to add some wait_on_cmds type of 
function where we wait for commends affected by the tmf to be sent.

So something like

wait_on_commands()
{
        loop for each cmd on requeue list
                if (check_restrictions(task))
                        wait for a while then restart loop and check
}

// Instead of the wait we could also add some per task callback that 
gets called when the data/pdus are finally sent, but that is probably 
overkill.



eh_lu_reset()
{

if (tmf successful)
        wait_on_commands()
        fail_scsi_tasks()
}


> 
> Signed-off-by: Hannes Reinecke <h...@suse.de>
> ---
>  drivers/scsi/libiscsi.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/drivers/scsi/libiscsi.c b/drivers/scsi/libiscsi.c
> index 16d35f0..5606c4d 100644
> --- a/drivers/scsi/libiscsi.c
> +++ b/drivers/scsi/libiscsi.c
> @@ -1880,9 +1880,9 @@ void iscsi_suspend_tx(struct iscsi_conn *conn)
>       struct Scsi_Host *shost = conn->session->host;
>       struct iscsi_host *ihost = shost_priv(shost);
>  
> -     set_bit(ISCSI_SUSPEND_BIT, &conn->suspend_tx);
>       if (ihost->workq)
>               flush_workqueue(ihost->workq);
> +     set_bit(ISCSI_SUSPEND_BIT, &conn->suspend_tx);
>  }
>  EXPORT_SYMBOL_GPL(iscsi_suspend_tx);
>  


--~--~---------~--~----~------------~-------~--~----~
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