svn commit: r214279 - in head: share/man/man4 sys/cam
gcooper at FreeBSD.org
Sun Oct 24 17:48:03 UTC 2010
On Sun, Oct 24, 2010 at 10:03 AM, Alexander Motin <mav at freebsd.org> wrote:
> Bruce Cran wrote:
>> On Sunday 24 October 2010 17:31:58 Bruce Cran wrote:
>>> Mostly revert r203420, and add similar functionality into ada(4) since
>>> the existing code caused problems with some SCSI controllers.
> Proper way would be IMHO to fix polling in aac driver.
>>> A new sysctl kern.cam.ada.spindown_shutdown has been added that controls
>>> whether or not to spin-down disks when shutting down.
>>> Spinning down the disks unloads/parks the heads - this is
>>> much better than removing power when the disk is still
>>> spinning because otherwise an Emergency Unload occurs which may cause
>>> damage to the actuator.
>> The FLUSH CACHE + STANDBY IMMEDIATE commands are issued (instead of just
>> SLEEP) following the procedure documented in Fujitsu's MHW series product
>> documentation under section 1.10.1, "Recommended power-off sequence".
> Not instead of "just SLEEP", but instead of FLUSH CACHE (by respective
> peripheral driver) + SLEEP (by xpt). It should probably be the same.
> Just for the note, SCSI specification states that STOP automatically
> implies FLUSH CACHE. ATA - doesn't.
I could be wrong, but I think the ANSI ATA<->SCSI spec states
otherwise (taken from ANSI INCITS 431-2007 page 62 -- see steps 1-4):
9.11.3 START STOP UNIT START bit LOEJ bit combinations
The SATL shall perform the actions shown in table 40 in response to a
START STOP UNIT command.
Table 40 — Definition of START and LOEJ bits in the START STOP UNIT CDB
START LOEJ Definition
0 0 The SATL shall:
1) If the IMMED bit is set to one, then return GOOD status;
2) Issue an ATA flush command (see 3.1.11) to the ATA device;
3) If the ATA flush command completes with any error, then process ending status
according to the IMMED bit (see 9.11.2) with the additional sense code set to
COMMAND SEQUENCE ERROR;
4) If the ATA flush command completes without error, then issue an ATA STANDBY
IMMEDIATE command to the ATA Sector Count set to zero;
5) If the ATA STANDBY IMMEDIATE command completes with any error, then
process ending status according to the IMMED bit (see 9.11.2) with the
sense code set to COMMAND SEQUENCE ERROR; and
6) If the ATA STANDBY IMMEDIATE command completes without error and the
IMMED bit is set to zero, then return GOOD status (see 9.11.2) a.
Not sure about the ATA spec standalone... might be present in the ATA8 spec.
More information about the svn-src-head