• Tejun Heo's avatar
    libata: fix internal command failure handling · f4b31db9
    Tejun Heo authored
    When an internal command fails, it should be failed directly without
    invoking EH.  In the original implemetation, this was accomplished by
    letting internal command bypass failure handling in ata_qc_complete().
    However, later changes added post-successful-completion handling to
    that code path and the success path is no longer adequate as internal
    command failure path.  One of the visible problems is that internal
    command failure due to timeout or other freeze conditions would
    spuriously trigger WARN_ON_ONCE() in the success path.
    
    This patch updates failure path such that internal command failure
    handling is contained there.
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Cc: stable@kernel.org
    Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
    f4b31db9
libata-core.c 174 KB