diff options
author | Tejun Heo <htejun@gmail.com> | 2006-07-03 03:07:26 -0400 |
---|---|---|
committer | Jeff Garzik <jeff@garzik.org> | 2006-07-05 22:16:28 -0400 |
commit | d6f26d1f1f1128a896f38a7f8426daed0a1205a2 (patch) | |
tree | ee86bb8f6fff0e1c8df78978ae7f402fbc1dc454 /include/linux | |
parent | 02670bf379267f55a43aa57f6895689697e90eb3 (diff) |
[PATCH] libata: reimplement per-dev PM
Reimplement per-dev PM. The original implementation directly put the
device into suspended mode and didn't synchronize w/ EH operations
including hotplug. This patch reimplements ata_scsi_device_suspend()
and ata_scsi_device_resume() such that they request EH to perform the
respective operations. Both functions synchronize with hotplug such
that it doesn't operate on detached devices.
Suspend waits for completion but resume just issues request and
returns. This allows parallel wake up of devices and thus speeds up
system resume.
Due to sdev detach synchronization, it's not feasible to separate out
EH requesting from sdev handling; thus, ata_device_suspend/resume()
are removed and everything is implemented in the respective
libata-scsi functions.
Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
Diffstat (limited to 'include/linux')
-rw-r--r-- | include/linux/libata.h | 2 |
1 files changed, 0 insertions, 2 deletions
diff --git a/include/linux/libata.h b/include/linux/libata.h index 363c7501843a..5ac262608199 100644 --- a/include/linux/libata.h +++ b/include/linux/libata.h | |||
@@ -687,8 +687,6 @@ extern int ata_port_online(struct ata_port *ap); | |||
687 | extern int ata_port_offline(struct ata_port *ap); | 687 | extern int ata_port_offline(struct ata_port *ap); |
688 | extern int ata_scsi_device_resume(struct scsi_device *); | 688 | extern int ata_scsi_device_resume(struct scsi_device *); |
689 | extern int ata_scsi_device_suspend(struct scsi_device *, pm_message_t state); | 689 | extern int ata_scsi_device_suspend(struct scsi_device *, pm_message_t state); |
690 | extern int ata_device_resume(struct ata_device *); | ||
691 | extern int ata_device_suspend(struct ata_device *, pm_message_t state); | ||
692 | extern int ata_ratelimit(void); | 690 | extern int ata_ratelimit(void); |
693 | extern unsigned int ata_busy_sleep(struct ata_port *ap, | 691 | extern unsigned int ata_busy_sleep(struct ata_port *ap, |
694 | unsigned long timeout_pat, | 692 | unsigned long timeout_pat, |