diff options
| author | Tejun Heo <htejun@gmail.com> | 2006-01-22 23:09:37 -0500 |
|---|---|---|
| committer | Jeff Garzik <jgarzik@pobox.com> | 2006-01-26 22:36:28 -0500 |
| commit | a72ec4ce6d3ae92e76baf5b2c65cc26e5e775e83 (patch) | |
| tree | f5a177cc30c9b39d8ae7dcad29d03d27534b9f78 /include/linux | |
| parent | 041c5fc33cb7ed4fe5322585a611fb6e29a05d3a (diff) | |
[PATCH] libata: implement and apply ata_eh_qc_complete/retry()
Implement ata_eh_qc_complete/retry() using scsi_eh_finish_cmd() and
scsi_eh_flush_done_q(). This removes all eh scsicmd finish hacks from
low level drivers.
This change was first suggested by Jeff Garzik.
Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/libata.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/include/linux/libata.h b/include/linux/libata.h index b1ea2f98bfbb..576788de962a 100644 --- a/include/linux/libata.h +++ b/include/linux/libata.h | |||
| @@ -398,6 +398,7 @@ struct ata_port { | |||
| 398 | unsigned long pio_task_timeout; | 398 | unsigned long pio_task_timeout; |
| 399 | 399 | ||
| 400 | u32 msg_enable; | 400 | u32 msg_enable; |
| 401 | struct list_head eh_done_q; | ||
| 401 | 402 | ||
| 402 | void *private_data; | 403 | void *private_data; |
| 403 | }; | 404 | }; |
| @@ -490,6 +491,8 @@ extern int ata_scsi_detect(struct scsi_host_template *sht); | |||
| 490 | extern int ata_scsi_ioctl(struct scsi_device *dev, int cmd, void __user *arg); | 491 | extern int ata_scsi_ioctl(struct scsi_device *dev, int cmd, void __user *arg); |
| 491 | extern int ata_scsi_queuecmd(struct scsi_cmnd *cmd, void (*done)(struct scsi_cmnd *)); | 492 | extern int ata_scsi_queuecmd(struct scsi_cmnd *cmd, void (*done)(struct scsi_cmnd *)); |
| 492 | extern int ata_scsi_error(struct Scsi_Host *host); | 493 | extern int ata_scsi_error(struct Scsi_Host *host); |
| 494 | extern void ata_eh_qc_complete(struct ata_queued_cmd *qc); | ||
| 495 | extern void ata_eh_qc_retry(struct ata_queued_cmd *qc); | ||
| 493 | extern int ata_scsi_release(struct Scsi_Host *host); | 496 | extern int ata_scsi_release(struct Scsi_Host *host); |
| 494 | extern unsigned int ata_host_intr(struct ata_port *ap, struct ata_queued_cmd *qc); | 497 | extern unsigned int ata_host_intr(struct ata_port *ap, struct ata_queued_cmd *qc); |
| 495 | extern int ata_scsi_device_resume(struct scsi_device *); | 498 | extern int ata_scsi_device_resume(struct scsi_device *); |
