| From f0ad30d3d2dc924decc0e10b1ff6dc32525a5d99 Mon Sep 17 00:00:00 2001 |
| From: David Milburn <dmilburn@redhat.com> |
| Date: Fri, 3 Sep 2010 17:13:03 -0500 |
| Subject: [SCSI] libsas: fix NCQ mixing with non-NCQ |
| |
| From: David Milburn <dmilburn@redhat.com> |
| |
| commit f0ad30d3d2dc924decc0e10b1ff6dc32525a5d99 upstream. |
| |
| Some cards (like mvsas) have issue troubles if non-NCQ commands are |
| mixed with NCQ ones. Fix this by using the libata default NCQ check |
| routine which waits until all NCQ commands are complete before issuing |
| a non-NCQ one. The impact to cards (like aic94xx) which don't need |
| this logic should be minimal |
| |
| Signed-off-by: James Bottomley <James.Bottomley@suse.de> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| |
| --- |
| drivers/scsi/libsas/sas_ata.c | 1 + |
| 1 file changed, 1 insertion(+) |
| |
| --- a/drivers/scsi/libsas/sas_ata.c |
| +++ b/drivers/scsi/libsas/sas_ata.c |
| @@ -346,6 +346,7 @@ static int sas_ata_scr_read(struct ata_l |
| static struct ata_port_operations sas_sata_ops = { |
| .phy_reset = sas_ata_phy_reset, |
| .post_internal_cmd = sas_ata_post_internal, |
| + .qc_defer = ata_std_qc_defer, |
| .qc_prep = ata_noop_qc_prep, |
| .qc_issue = sas_ata_qc_issue, |
| .qc_fill_rtf = sas_ata_qc_fill_rtf, |