• Tejun Heo's avatar
    libata: fix internal command failure handling · 99823646
    Tejun Heo authored
    commit f4b31db9 upstream.
    
    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>
    Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
    99823646
libata-core.c 174 KB