libiscsi is using DID_IMM_RETRY to signal transient error
states like IN_RECOVERY or LOGGING_OUT. However, in doing
so the command will always be retried with no check for
any failfast setting. This doesn't allow multipath to
run efficiently if any of these transient error states
is taking longer than expected and it would be more
efficient to route the IO to another path.

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

diff --git a/drivers/scsi/libiscsi.c b/drivers/scsi/libiscsi.c
index 52d876f..21ed45f 100644
--- a/drivers/scsi/libiscsi.c
+++ b/drivers/scsi/libiscsi.c
@@ -1302,7 +1302,7 @@ check_mgmt:
                                         struct iscsi_task, running);
                list_del_init(&conn->task->running);
                if (conn->session->state == ISCSI_STATE_LOGGING_OUT) {
-                       fail_scsi_task(conn->task, DID_IMM_RETRY);
+                       fail_scsi_task(conn->task, DID_SOFT_ERROR);
                        continue;
                }
                rc = iscsi_prep_scsi_cmd_pdu(conn->task);
@@ -1446,11 +1446,11 @@ int iscsi_queuecommand(struct scsi_cmnd *sc, void 
(*done)(struct scsi_cmnd *))
                case ISCSI_STATE_FAILED:
                case ISCSI_STATE_IN_RECOVERY:
                        reason = FAILURE_SESSION_IN_RECOVERY;
-                       sc->result = DID_IMM_RETRY << 16;
+                       sc->result = DID_SOFT_ERROR << 16;
                        break;
                case ISCSI_STATE_LOGGING_OUT:
                        reason = FAILURE_SESSION_LOGGING_OUT;
-                       sc->result = DID_IMM_RETRY << 16;
+                       sc->result = DID_SOFT_ERROR << 16;
                        break;
                case ISCSI_STATE_RECOVERY_FAILED:
                        reason = FAILURE_SESSION_RECOVERY_TIMEOUT;
-- 
1.5.3.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