• Eiichi Tsukata's avatar
    [SCSI] Add timeout to avoid infinite command retry · ee60b2c5
    Eiichi Tsukata authored
    Currently, scsi error handling in scsi_io_completion() tries to
    unconditionally requeue scsi command when device keeps some error state.
    For example, UNIT_ATTENTION causes infinite retry with
    action == ACTION_RETRY.
    This is because retryable errors are thought to be temporary and the scsi
    device will soon recover from those errors. Normally, such retry policy is
    appropriate because the device will soon recover from temporary error state.
    
    But there is no guarantee that device is able to recover from error state
    immediately. Some hardware error can prevent device from recovering.
    
    This patch adds timeout in scsi_io_completion() to avoid infinite command
    retry in scsi_io_completion(). Once scsi command retry time is longer than
    this timeout, the command is treated as failure.
    Signed-off-by: default avatarEiichi Tsukata <eiichi.tsukata.xh@hitachi.com>
    Signed-off-by: default avatarJames Bottomley <JBottomley@Parallels.com>
    ee60b2c5
scsi_lib.c 68.5 KB