USCSI ioctl: SCSI passthrough of ATA command: "0xe5: check power mode" wakes up sleeping drive
Sending a "0xe5: check power mode" ATA command via "0x85: SCSI pass through" using the USCSI ioctl to a SATA drive behind a LSI SAS2008 controller wakes up a sleeping drive.
According to the ATA/ATAPI command set specification "The CHECK POWER MODE command shall not cause the device to change power or affect the operation of the Standby timer."
Using the LSI utility program "lsiutil" to send the following CDB to a SATA drive in sleep or standby mode behind a LSI SAS2008 controller does NOT wake up the drive and properly reports the power mode in the returned sense data block.
CDB: "0x85 0x06 0x2c 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0xe5 0x00"
Sending the same CDB via the USCSI ioctl to the drive using the device node under /dev/rdsk wakes up the drive.
The power mode reported in the sense data block is then always Active/Idle.
This affects for example smartmontools and renders the -n option useless.
On Solaris derived operating systems the smartctl utility is for example using the USCSI ioctl to send commands to SATA devices behind a SAT layer.
The "-n standby"option of smartctl is intended to prevent waking up sleeping devices just for a SMART test.
This does currently not work under Illumos.