1. 30 Oct, 2007 5 commits
    • Tejun Heo's avatar
      libata: implement and use ATA_QCFLAG_QUIET · e027bd36
      Tejun Heo authored
      Implement ATA_QCFLAG_QUIET which indicates that there's no need to
      report if the command fails with AC_ERR_DEV and set it for passthrough
      commands.
      
      Combined with previous changes, this now makes device errors for all
      direct commands reported directly to the issuer without going through
      EH actions and reporting.
      
      Note that EH is still invoked after non-IO device errors to determine
      the nature of the error and resume command execution (some controller
      requires special care after error to continue).  It just performs
      default maintenance after error, examines what's going on, realizes
      that it's none of its business and reports the command failure without
      logging any error messages.
      Signed-off-by: default avatarTejun Heo <htejun@gmail.com>
      Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
      e027bd36
    • Tejun Heo's avatar
      libata: stop being overjealous about non-IO commands · f90f0828
      Tejun Heo authored
      libata EH always revalidated device and retried failed command after
      error except for ATAPI CCs.  This is unnecessary and hinders with
      users issuing direct commands.  This patch makes the following
      changes.
      
      * Make sata_sil24 not request ATA_EH_REVALIDATE on device errors.
        sil24 is the only driver which does this.  All others let libata EH
        core code decide.
      
      * Don't request revalidation after device error of non-IO command.
        Revalidation doesn't really help anybody.  As ATA_EH_REVALIDATE
        isn't set by default, there's no reason to clear it after sense data
        is read.  Kill ATA_EH_REVALIDATE clearing code while at it.
      
      * Don't retry non-IO command after device error.  Device has rejected
        the command.  There's no point in retrying.
      Signed-off-by: default avatarTejun Heo <htejun@gmail.com>
      Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
      f90f0828
    • Tejun Heo's avatar
      libata: flush is an IO command · b666da35
      Tejun Heo authored
      ATA_QCFLAG_IO is used to mark commands which are used to perform
      regluar IO transfers via block layer.  These commands are assumed to
      be valid and taken more seriously during error handling.  Cache flush
      is used by regular IO path and necessary for data integrity.  Mark it
      with ATA_QCFLAG_IO.
      Signed-off-by: default avatarTejun Heo <htejun@gmail.com>
      Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
      b666da35
    • Mikael Pettersson's avatar
      sata_promise: cleanups · 5595ddf9
      Mikael Pettersson authored
      Minor sata_promise cleanups:
      - use C99 array initialisers in pdc_port_info[]
      - add myself in the file head's Maintained by note,
        since users don't always read the MAINTAINERS file
      - SG/PRD bug workaround warrants driver version bump
      Signed-off-by: default avatarMikael Pettersson <mikpe@it.uu.se>
      --
       drivers/ata/sata_promise.c |   17 +++++++++--------
       1 files changed, 9 insertions(+), 8 deletions(-)
      Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
      5595ddf9
    • Mikael Pettersson's avatar
      sata_promise: ASIC PRD table bug workaround, take 2 · b9ccd4a9
      Mikael Pettersson authored
      Second-generation Promise SATA controllers have an ASIC bug
      which can trigger if the last PRD entry is larger than 164 bytes,
      resulting in intermittent errors and possible data corruption.
      
      Work around this by replacing calls to ata_qc_prep() with a
      private version that fills the PRD, checks the size of the
      last entry, and if necessary splits it to avoid the bug.
      Also reduce sg_tablesize by 1 to accommodate the new entry.
      
      Tested on the second-generation SATA300 TX4 and SATA300 TX2plus,
      and the first-generation PDC20378.
      
      Thanks to Alexander Sabourenkov for verifying the bug by
      studying the vendor driver, and for writing the initial patch
      upon which this one is based.
      Signed-off-by: default avatarMikael Pettersson <mikpe@it.uu.se>
      --
      Changes since previous version:
      * use new PDC_MAX_PRD constant to initialise sg_tablesize
      
       drivers/ata/sata_promise.c |   87 ++++++++++++++++++++++++++++++++++++++++++---
       1 files changed, 83 insertions(+), 4 deletions(-)
      Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
      b9ccd4a9
  2. 29 Oct, 2007 35 commits