1. 15 5月, 2006 4 次提交
    • T
      [PATCH] libata-eh-fw: implement freeze/thaw · e3180499
      Tejun Heo 提交于
      Freezing is performed atomic w.r.t. host_set->lock and once frozen
      LLDD is not allowed to access the port or any qc on it.  Also, libata
      makes sure that no new qc gets issued to a frozen port.
      
      A frozen port is thawed after a reset operation completes
      successfully, so reset methods must do its job while the port is
      frozen.  During initialization all ports get frozen before requesting
      IRQ, so reset methods are always invoked on a frozen port.
      
      Optional ->freeze and ->thaw operations notify LLDD that the port is
      being frozen and thawed, respectively.  LLDD can disable/enable
      hardware interrupt in these callbacks if the controller's IRQ mask can
      be changed dynamically.  If the controller doesn't allow such
      operation, LLDD can check for frozen state in the interrupt handler
      and ack/clear interrupts unconditionally while frozen.
      Signed-off-by: NTejun Heo <htejun@gmail.com>
      e3180499
    • T
      [PATCH] libata-eh-fw: implement ata_port_schedule_eh() and ata_port_abort() · 7b70fc03
      Tejun Heo 提交于
      ata_port_schedule_eh() directly schedules EH for @ap without
      associated qc.  Once EH scheduled, no further qc is allowed and EH
      kicks in as soon as all currently active qc's are drained.
      
      ata_port_abort() schedules all currently active commands for EH by
      qc_completing them with ATA_QCFLAG_FAILED set.  If ata_port_abort()
      doesn't find any qc to abort, it directly schedule EH using
      ata_port_schedule_eh().
      
      These two functions provide ways to invoke EH for conditions which
      aren't directly related to any specfic qc.
      Signed-off-by: NTejun Heo <htejun@gmail.com>
      7b70fc03
    • T
      [PATCH] libata-eh-fw: implement new EH scheduling via error completion · f686bcb8
      Tejun Heo 提交于
      There are several ways a qc can get schedule for EH in new EH.  This
      patch implements one of them - completing a qc with ATA_QCFLAG_FAILED
      set or with non-zero qc->err_mask.  ALL such qc's are examined by EH.
      
      New EH schedules a qc for EH from completion iff ->error_handler is
      implemented, qc is marked as failed or qc->err_mask is non-zero and
      the command is not an internal command (internal cmd is handled via
      ->post_internal_cmd).  The EH scheduling itself is performed by asking
      SCSI midlayer to schedule EH for the specified scmd.
      
      For drivers implementing old-EH, nothing changes.  As this change
      makes ata_qc_complete() rather large, it's not inlined anymore and
      __ata_qc_complete() is exported to other parts of libata for later
      use.
      Signed-off-by: NTejun Heo <htejun@gmail.com>
      f686bcb8
    • T
      [PATCH] libata: use ATA printk helpers · f15a1daf
      Tejun Heo 提交于
      Use ATA printk helpers.
      Signed-off-by: NTejun Heo <htejun@gmail.com>
      f15a1daf
  2. 12 4月, 2006 2 次提交
  3. 02 4月, 2006 1 次提交