When sending data we should traverse all data-out PDUs,
otherwise the queue will stall during TMF.

Signed-off-by: Hannes Reinecke <h...@suse.de>
---
 drivers/scsi/libiscsi.c |   13 +++++++------
 1 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/drivers/scsi/libiscsi.c b/drivers/scsi/libiscsi.c
index 6123f97..c58de26 100644
--- a/drivers/scsi/libiscsi.c
+++ b/drivers/scsi/libiscsi.c
@@ -1403,7 +1403,7 @@ EXPORT_SYMBOL_GPL(iscsi_requeue_task);
  **/
 static int iscsi_data_xmit(struct iscsi_conn *conn)
 {
-       struct iscsi_task *task;
+       struct iscsi_task *task, *tmptask;
        int rc = 0;
 
        spin_lock_bh(&conn->session->lock);
@@ -1454,7 +1454,10 @@ check_mgmt:
                                list_add_tail(&conn->task->running,
                                              &conn->cmdqueue);
                                conn->task = NULL;
-                               goto done;
+                               if (rc == -ENOMEM)
+                                       goto done;
+                               else
+                                       break;
                        } else
                                fail_scsi_task(conn->task, DID_ABORT);
                        continue;
@@ -1471,17 +1474,15 @@ check_mgmt:
                        goto check_mgmt;
        }
 
-       while (!list_empty(&conn->requeue)) {
+       list_for_each_entry_safe(task, tmptask, &conn->requeue, running) {
                /*
                 * we always do fastlogout - conn stop code will clean up.
                 */
                if (conn->session->state == ISCSI_STATE_LOGGING_OUT)
                        break;
 
-               task = list_entry(conn->requeue.next, struct iscsi_task,
-                                 running);
                if (iscsi_check_tmf_restrictions(task, ISCSI_OP_SCSI_DATA_OUT))
-                       break;
+                       continue;
 
                conn->task = task;
                list_del_init(&conn->task->running);
-- 
1.6.0.2


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