Messages in this thread | | | Date | Wed, 08 Aug 2007 10:24:25 -0400 | From | Mark Lord <> | Subject | Re: Disk spin down issue on shut down/suspend to disk |
| |
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@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |