This is the set I currently have. I fixed libata to implement the REQUEST SENSE scsi command, and set up sd to use blk_pre_runtime_suspend to force the queue to the RPM_SUSPENDING state while issuing the REQUEST SENSE command to make sure other requests are blocked, then if REQUEST SENSE indicates that the drive does not need started, then complete suspending the device, otherwise cancel the suspend by passing an error value to blk_post_runtime_suspend. For some reason, the system hangs on resume if I issue the REQUEST SENSE command after blk_pre_runtime_suspend. My understanding is that the REQ_PM flag should make the command process even though the queue is RPM_SUSPENDING, but it doesn't seem to work. Anyone have any idea why? Phillip Susi (6): libata: use sleep instead of standby command libata: avoid waking disk for several commands libata: resume in the background libata: don't start disks on resume sd: don't start disks on system resume libata: return power status in REQUEST SENSE command drivers/ata/libata-core.c | 38 +++++++++++++++---- drivers/ata/libata-eh.c | 10 ++++- drivers/ata/libata-scsi.c | 44 ++++++++++++++++++---- drivers/ata/libata.h | 1 + drivers/scsi/sd.c | 94 ++++++++++++++++++++++++++++++++++++++++++----- drivers/scsi/sd.h | 1 + include/linux/libata.h | 1 + 7 files changed, 162 insertions(+), 27 deletions(-) -- 1.8.3.2 -- To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html