• Hannes Reinecke's avatar
    [SCSI] improved eh timeout handler · e494f6a7
    Hannes Reinecke authored
    When a command runs into a timeout we need to send an 'ABORT TASK'
    TMF. This is typically done by the 'eh_abort_handler' LLDD callback.
    
    Conceptually, however, this function is a normal SCSI command, so
    there is no need to enter the error handler.
    
    This patch implements a new scsi_abort_command() function which
    invokes an asynchronous function scsi_eh_abort_handler() to
    abort the commands via the usual 'eh_abort_handler'.
    
    If abort succeeds the command is either retried or terminated,
    depending on the number of allowed retries. However, 'eh_eflags'
    records the abort, so if the retry would fail again the
    command is pushed onto the error handler without trying to
    abort it (again); it'll be cleared up from SCSI EH.
    
    [hare: smatch detected stray switch fixed]
    Signed-off-by: default avatarHannes Reinecke <hare@suse.de>
    Signed-off-by: default avatarJames Bottomley <JBottomley@Parallels.com>
    e494f6a7
scsi.c 37.8 KB