• 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
libata.h 29.1 KB