[PATCH] libata: reimplement per-dev PM
authorTejun Heo <htejun@gmail.com>
Mon, 3 Jul 2006 07:07:26 +0000 (16:07 +0900)
committerJeff Garzik <jeff@garzik.org>
Thu, 6 Jul 2006 02:16:28 +0000 (22:16 -0400)
commitd6f26d1f1f1128a896f38a7f8426daed0a1205a2
treeee86bb8f6fff0e1c8df78978ae7f402fbc1dc454
parent02670bf379267f55a43aa57f6895689697e90eb3
[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>
drivers/scsi/libata-core.c
drivers/scsi/libata-scsi.c
include/linux/libata.h