lkml.org 
[lkml]   [2009]   [Nov]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[03/99] libata: fix internal command failure handling
    2.6.31-stable review patch.  If anyone has any objections, please let us know.

    ------------------
    From: Tejun Heo <tj@kernel.org>

    commit f4b31db92d163df8a639f5a8c8633bdeb6e8432d 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: Tejun Heo <tj@kernel.org>
    Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

    ---
    drivers/ata/libata-core.c | 12 +++++++-----
    1 file changed, 7 insertions(+), 5 deletions(-)

    --- a/drivers/ata/libata-core.c
    +++ b/drivers/ata/libata-core.c
    @@ -5008,12 +5008,14 @@ void ata_qc_complete(struct ata_queued_c
    qc->flags |= ATA_QCFLAG_FAILED;

    if (unlikely(qc->flags & ATA_QCFLAG_FAILED)) {
    - if (!ata_tag_internal(qc->tag)) {
    - /* always fill result TF for failed qc */
    - fill_result_tf(qc);
    + /* always fill result TF for failed qc */
    + fill_result_tf(qc);
    +
    + if (!ata_tag_internal(qc->tag))
    ata_qc_schedule_eh(qc);
    - return;
    - }
    + else
    + __ata_qc_complete(qc);
    + return;
    }

    /* read result TF if requested */



    \
     
     \ /
      Last update: 2009-11-06 23:25    [W:0.031 / U:153.072 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site