diff options
author | Jeff Garzik <jgarzik@pobox.com> | 2006-01-27 02:39:25 -0500 |
---|---|---|
committer | Jeff Garzik <jgarzik@pobox.com> | 2006-01-27 02:39:25 -0500 |
commit | 7103c7bc863c10dd2a26c19c8cf4d7d2846da947 (patch) | |
tree | 73a9d674670c37e4f160c0d4553f3d14664900be /drivers/scsi/sata_sx4.c | |
parent | b4d28889f7ebfe498dedaceb773b4c785b97d195 (diff) | |
parent | a72ec4ce6d3ae92e76baf5b2c65cc26e5e775e83 (diff) |
Merge branch 'tmp'
Diffstat (limited to 'drivers/scsi/sata_sx4.c')
-rw-r--r-- | drivers/scsi/sata_sx4.c | 12 |
1 files changed, 2 insertions, 10 deletions
diff --git a/drivers/scsi/sata_sx4.c b/drivers/scsi/sata_sx4.c index db08a8ba9ea7..c3975fada63f 100644 --- a/drivers/scsi/sata_sx4.c +++ b/drivers/scsi/sata_sx4.c | |||
@@ -872,20 +872,11 @@ static void pdc_eng_timeout(struct ata_port *ap) | |||
872 | goto out; | 872 | goto out; |
873 | } | 873 | } |
874 | 874 | ||
875 | /* hack alert! We cannot use the supplied completion | ||
876 | * function from inside the ->eh_strategy_handler() thread. | ||
877 | * libata is the only user of ->eh_strategy_handler() in | ||
878 | * any kernel, so the default scsi_done() assumes it is | ||
879 | * not being called from the SCSI EH. | ||
880 | */ | ||
881 | qc->scsidone = scsi_finish_command; | ||
882 | |||
883 | switch (qc->tf.protocol) { | 875 | switch (qc->tf.protocol) { |
884 | case ATA_PROT_DMA: | 876 | case ATA_PROT_DMA: |
885 | case ATA_PROT_NODATA: | 877 | case ATA_PROT_NODATA: |
886 | printk(KERN_ERR "ata%u: command timeout\n", ap->id); | 878 | printk(KERN_ERR "ata%u: command timeout\n", ap->id); |
887 | qc->err_mask |= __ac_err_mask(ata_wait_idle(ap)); | 879 | qc->err_mask |= __ac_err_mask(ata_wait_idle(ap)); |
888 | ata_qc_complete(qc); | ||
889 | break; | 880 | break; |
890 | 881 | ||
891 | default: | 882 | default: |
@@ -895,12 +886,13 @@ static void pdc_eng_timeout(struct ata_port *ap) | |||
895 | ap->id, qc->tf.command, drv_stat); | 886 | ap->id, qc->tf.command, drv_stat); |
896 | 887 | ||
897 | qc->err_mask |= ac_err_mask(drv_stat); | 888 | qc->err_mask |= ac_err_mask(drv_stat); |
898 | ata_qc_complete(qc); | ||
899 | break; | 889 | break; |
900 | } | 890 | } |
901 | 891 | ||
902 | out: | 892 | out: |
903 | spin_unlock_irqrestore(&host_set->lock, flags); | 893 | spin_unlock_irqrestore(&host_set->lock, flags); |
894 | if (qc) | ||
895 | ata_eh_qc_complete(qc); | ||
904 | DPRINTK("EXIT\n"); | 896 | DPRINTK("EXIT\n"); |
905 | } | 897 | } |
906 | 898 | ||