• Andrew Morton's avatar
    [PATCH] ide-scsi error handling fixes · 4e9fbe87
    Andrew Morton authored
    From: Willem Riede <wrlk@riede.org>
    
    The patch revises the error handling in ide-scsi, fixing the scheduling
    while locked issues, and make it work properly, at least for me...
    
    Specific changes in this patch:
    
    - introduce idescsi_expiry, a timeout routine for the ide subsystem,
      which simply flags the fact that the command timed out, but postpones
      any other action until either the command still finishes on its own
      (unlikely?) or the scsi error handler kicks in;
    
    - introduce idescsi_atapi_error and idescsi_atapi_abort, error routines
      for the ide subsystem, which are modeled after those of ide-cd, but
      take only minimal effort to recover, leaving the heavy lifting for
      the scsi error handler;
    
    - rewrite (and rename for clarity) idescsi_eh_abort and idescsi_eh_error,
      the abort/error routines to be called by the scsi error handler --
      this redesign should not have the scheduling while atomic problems
      of the old implementation.
    
    - move ide_cdrom_dump_status() from ide-cd.c to ide-lib.c as
      ide_dump_atapi_status() and both ide-cd and ide-scsi call it.
    
    - replaces BUG() by WARN_ON()/printk in the error handling code.
    
    - sets TASK_UNINTERRUPTIBLE before schedule_timeout() and moves the host
      unlock/lock around the while loop inside the loop in idescsi_eh_reset().
    4e9fbe87
ide-lib.c 13.4 KB