Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=ed773e66480fdcd06732eb2aa39362599dcd67fa
Commit:     ed773e66480fdcd06732eb2aa39362599dcd67fa
Parent:     18a6598f2d3bb7275dadba77df5f06bc996a77d4
Author:     Brian King <[EMAIL PROTECTED]>
AuthorDate: Thu Mar 29 15:25:52 2007 -0500
Committer:  James Bottomley <[EMAIL PROTECTED]>
CommitDate: Tue Apr 17 17:55:36 2007 -0400

    [SCSI] scsi_error.c: Add EH Start Unit retry
    
    Currently, the scsi error handler will issue a START_UNIT
    command if the drive indicates it needs its motor started
    and the allow_restart flag is set in the scsi_device. If,
    after the scsi error handler invokes a host adapter reset
    due to error recovery, a device is in a unit attention
    state AND also needs a START_UNIT, that device will be placed
    offline. The disk array devices on an ipr RAID adapter
    will do exactly this when in a dual initiator configuration.
    This patch adds a single retry to the EH initiated
    START_UNIT.
    
    Signed-off-by: Brian King <[EMAIL PROTECTED]>
    
    Patch modified and
    Signed-off-by: James Bottomley <[EMAIL PROTECTED]>
---
 drivers/scsi/scsi_error.c |    8 +++++---
 1 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/drivers/scsi/scsi_error.c b/drivers/scsi/scsi_error.c
index 7a1a1bb..28a266c 100644
--- a/drivers/scsi/scsi_error.c
+++ b/drivers/scsi/scsi_error.c
@@ -932,10 +932,12 @@ static int scsi_eh_try_stu(struct scsi_cmnd *scmd)
        static unsigned char stu_command[6] = {START_STOP, 0, 0, 0, 1, 0};
 
        if (scmd->device->allow_restart) {
-               int rtn;
+               int i, rtn = NEEDS_RETRY;
+
+               for (i = 0; rtn == NEEDS_RETRY && i < 2; i++)
+                       rtn = scsi_send_eh_cmnd(scmd, stu_command, 6,
+                                               START_UNIT_TIMEOUT, 0);
 
-               rtn = scsi_send_eh_cmnd(scmd, stu_command, 6,
-                                       START_UNIT_TIMEOUT, 0);
                if (rtn == SUCCESS)
                        return 0;
        }
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to