Re: power off disk drives while running

From: Jan Engelhardt
Date: Sat Aug 18 2007 - 17:10:19 EST



On Aug 18 2007 14:22, Robert Hancock wrote:
>> I see this a a very important feature in the embedded system relm, I
>> have worked on two projects that required extreme power management,
>> and massive data storage. The ability to fully turn off a drive while
>> the system is running is key. It seems like this should be able to be
>> done from a kernel point of view rather than extra hardware. Although
>> if is not in the IDE/SATA spec then extra hardware would be necessary.
>
> You can put a drive into sleep mode with ATA commands, that one requires a
> reset to take it out of that state (as opposed to standby which spins down but
> will spin up on any command that's issued afterwards). That's as close as it
> gets to fully powering off a drive through software.

An IDE reset bringing the disk up again -- that does not sound like
it is powered down. Power down for me means: as if the plug was pulled.


Well, you could also rewrite the standy ioctl to do this:

- flush data
- send spindown request
- wait 1ms - 1s (give drive some time to park heads)
- outportb(0x378, 0) - poweroff by setting LPT data line to 0
(who knows? they might control the disk power!)

But you'd still have to fiddle with bringing it up again. That is, you have to
patch the block or device driver to outportb(0x378, 255) again when something
is supposed to spin up again.

Oh and of course you have to deal with the problem that all userspace apps may
hang because they are waiting for the disk.

Also consider that frequently spinning up/down is said to reduce lifetime.


Jan
--
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/