Re: Disk spin down issue on shut down/suspend to disk

From: Mark Lord
Date: Wed Aug 08 2007 - 10:24:44 EST


Tejun Heo wrote:
Mark Lord wrote:
> Tejun Heo wrote:
>> Michael Sedkowski wrote:
>>> Dnia 07-08-2007, Wt o godzinie 03:43 +0900, Tejun Heo napisał(a):
>>>> Does emergency unload count increase
>>>> after each power down?
>>> I think I got it.
>>> Using smartctl I've done a test and shut down, then repeted the test.
>>> The only values that where diffrent are temperatures and
>>> Hardware_ECC_Recovered which rised by 6 points.
>>> However I have no idea which of those is the "emergency count"...
>>> Full results in attachment.
>>>
>>> 192 Power-Off_Retract_Count 0x0032 100 100 000 Old_age >>> Always - 388
>>
>> I think this is the one. You can test it by forcefully powering off the
>> machine (press power button for several secs or disconnect AC and
>> battery) and see whether the count increases.
> > FWIW, Tejun, with 2.6.22, my new Seagate 160GB SATA drive (notebook)
> increments the "Power-Off_Retract_Count" on each suspend-to-RAM operation.
> It does not do any double spin-up/spin-down things though.
> > What a mess.

Hmmm.. It shouldn't. libata now issues STANDBYNOW prior to entering
STR. Can you instrument code a bit and see whether it actually gets issued?

Heh.. I haven't instrumented it yet, but I did discover a bit more about it:

The Power-Off_Retract_Count incrmenents *only* when there's data in the
on-drive write-cache. So if I haven't written anything significantly large
before suspending, then it often does NOT increment the retract counter.

But if I copy a couple of multi-MB files around and then suspend (to RAM),
the retract count gets incremented.

So I've now just stuck "hdparm -F /dev/sda" into my suspend script,
and that cures the problem completely for me. "-F" does a FLUSH_CACHE,
and requires a recent copy of hdparm.

Perhaps libata should also do a FLUSH_CACHE before any STANDBYNOW command,
prior to entering STR, which is what my script is currently now doing..

I'll instrument libata and see what the current sequence is.
-
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/