summaryrefslogtreecommitdiff
path: root/include/linux
diff options
context:
space:
mode:
authorAlan Cox <alan@redhat.com>2009-03-24 10:23:46 +0000
committerJeff Garzik <jgarzik@redhat.com>2009-03-24 22:52:39 -0400
commitc96f1732e25362d10ee7bcac1df8412a2e6b7d23 (patch)
tree66e24eddb174d6751579ec5952f72cbbac0fb038 /include/linux
parent3d47aa8e7e7b2aa09256590388aa8dddc79280f9 (diff)
downloadlinux-3.10-c96f1732e25362d10ee7bcac1df8412a2e6b7d23.tar.gz
linux-3.10-c96f1732e25362d10ee7bcac1df8412a2e6b7d23.tar.bz2
linux-3.10-c96f1732e25362d10ee7bcac1df8412a2e6b7d23.zip
[libata] Improve timeout handling
On a timeout call a device specific handler early in the recovery so that we can complete and process successful commands which timed out due to IRQ loss or the like rather more elegantly. [Revised to exclude the timeout handling on a few devices that inherit from SFF but are not SFF enough to use the default timeout handler] Signed-off-by: Alan Cox <alan@redhat.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/libata.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/include/linux/libata.h b/include/linux/libata.h
index 3a07a32dfc2..76262d83656 100644
--- a/include/linux/libata.h
+++ b/include/linux/libata.h
@@ -795,6 +795,7 @@ struct ata_port_operations {
ata_reset_fn_t pmp_hardreset;
ata_postreset_fn_t pmp_postreset;
void (*error_handler)(struct ata_port *ap);
+ void (*lost_interrupt)(struct ata_port *ap);
void (*post_internal_cmd)(struct ata_queued_cmd *qc);
/*
@@ -1577,6 +1578,7 @@ extern bool ata_sff_qc_fill_rtf(struct ata_queued_cmd *qc);
extern unsigned int ata_sff_host_intr(struct ata_port *ap,
struct ata_queued_cmd *qc);
extern irqreturn_t ata_sff_interrupt(int irq, void *dev_instance);
+extern void ata_sff_lost_interrupt(struct ata_port *ap);
extern void ata_sff_freeze(struct ata_port *ap);
extern void ata_sff_thaw(struct ata_port *ap);
extern int ata_sff_prereset(struct ata_link *link, unsigned long deadline);