(es)ata drives may need an explicit spinup command?

Alexander Motin mav at FreeBSD.org
Thu Aug 6 20:45:45 UTC 2009

Juergen Lock wrote:
> On Thu, Aug 06, 2009 at 10:56:44PM +0300, Alexander Motin wrote:
>> Juergen Lock wrote:
>>> So I tested esata on a siis pcie card with a 750G Seagate Freeagent Pro
>>> drive and it does work - until the drive falls into powersave mode
>>> after being idle for a little while. :(  (I had the drive on 1394
>>> before on another box where it was able to recover from this condition,
>>> but not on usb or esata - and the drive's 1394 interface died a while
>>> ago and also esata is faster anyway...)
>>>  And now I came across this patch for the linux ata driver:
>>> 	http://git.kernel.org/?p=linux/kernel/git/jgarzik/libata-dev.git;a=commitdiff;h=169439c2e35f01e7832a9b4fc8a7446980c3d593;hp=1e999736cafdffc374f22eed37b291129ef82e4e
>>>  So my question is, could the same be done in our ata code?
>>> I have a slight :) hope it would help this drive too at least as it
>>> does seem to work on Linux...
>> I am not sure it is related to your case, as you said your drive works 
>> for some time after plug. If drive spun-down automatically due to 
>> inactivity, it should spin-up automatically also, as OS unable to track 
>> that transition. 30 seconds of ATA command timeout should be sufficient 
>> for drive to do this. Do you have any other symptoms?
> Well the drive becomes completely `dead' for our drivers once in this
> state, and when I try an atacontrol detach/attach on it at that point
> its not even found anymore.  (And when I powercycle it by pulling its
> little wall wart for a moment it comes back.)  Oh and I think I saw
> something in our 1394 drivers too that does send something like a
> spinup command...

The problem is that we have no idea when to use this command after drive 
was successfully working. Could you boot with new CAM drivers and kernel 
verbose messages enabled? I am interested of what exactly happens on 
logs/console when drive dies and how it reacts on `camcontrol reset X` 
and `camcontrol rescan X` commands.

Alexander Motin

More information about the freebsd-current mailing list