Sophie

Sophie

distrib > Scientific%20Linux > 5x > x86_64 > by-pkgid > 89877e42827f16fa5f86b1df0c2860b1 > files > 2161

kernel-2.6.18-128.1.10.el5.src.rpm

From: David Milburn <dmilburn@redhat.com>
Date: Wed, 4 Feb 2009 11:38:13 -0600
Subject: [scsi] libata: sas_ata fixup sas_sata_ops
Message-id: 20090204173813.GB5146@dhcp-210.hsv.redhat.com
O-Subject: [RHEL5.4 PATCH] libata: sas_ata fixup sas_sata_ops
Bugzilla: 483171
RH-Acked-by: Pete Zaitcev <zaitcev@redhat.com>
RH-Acked-by: Anton Arapov <aarapov@redhat.com>

Stratus is experiencing a crash on boot up when aic94xx
is loading when SAS and SATA disks are present. During
initialization ata_qc_complete is called which in turn
calls fill_result_tf and since sas_ata.c sas_sata_ops
doesn't set the .qc_fill_rtf pointer the system crashes

static void fill_result_tf(struct ata_queued_cmd *qc)
{
        struct ata_port *ap = qc->ap;

        qc->result_tf.flags = qc->tf.flags;
        ap->ops->qc_fill_rtf(qc);           <=====CRASH
}

This patch resolves BZ 483171, Stratus has confirmed a
2.6.18-130.el5 test kernel, and it corrects the backport
of this upstream commit.

commit 4c9bf4e799ce06a7378f1196587084802a414c03
Author: Tejun Heo <htejun@gmail.com>
Date:   Mon Apr 7 22:47:20 2008 +0900

    libata: replace tf_read with qc_fill_rtf for non-SFF drivers

Please review and ACK.

Thanks,
David

 drivers/scsi/libsas/sas_ata.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/drivers/scsi/libsas/sas_ata.c b/drivers/scsi/libsas/sas_ata.c
index 835e13e..1a51cec 100644
--- a/drivers/scsi/libsas/sas_ata.c
+++ b/drivers/scsi/libsas/sas_ata.c
@@ -351,7 +351,8 @@ static struct ata_port_operations sas_sata_ops = {
 	.phy_reset		= sas_ata_phy_reset,
 	.post_internal_cmd	= sas_ata_post_internal,
 	.qc_prep		= ata_noop_qc_prep,
-	.qc_issue		= sas_ata_qc_fill_rtf,
+	.qc_issue		= sas_ata_qc_issue,
+	.qc_fill_rtf            = sas_ata_qc_fill_rtf,
 	.port_start		= ata_sas_port_start,
 	.port_stop		= ata_sas_port_stop,
 	.scr_read		= sas_ata_scr_read,