lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Wed, 08 Aug 2007 11:21:53 -0400
From:	Mark Lord <liml@....ca>
To:	Mark Lord <lkml@....ca>
Cc:	Tejun Heo <htejun@...il.com>,
	Michael Sedkowski <sedmich@...il.com>, trenn@...e.de,
	Robert Hancock <hancockr@...w.ca>,
	"Rafael J. Wysocki" <rjw@...k.pl>,
	Henrique de Moraes Holschuh <hmh@....eng.br>,
	linux-kernel@...r.kernel.org, linux-ide@...r.kernel.org,
	linux-acpi@...r.kernel.org
Subject: Re: Disk spin down issue on shut down/suspend to disk

Mark Lord wrote:
> Tejun Heo wrote:
>> Mark Lord wrote:
..
>>>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.
>>
>> 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.

Okay, instrumented it and all of that now.

Yes, sd + libata-scsi send the proper FLUSH_CACHE_EXT and STANDBY1 commands
immediately prior to the suspend-to-RAM, and there are no other commands
sneaking through at the same time.  Good.

But the retract count still increments if I've recently written a signficant
amount of data.

My suspend script now has this little chunk of code at the point
where it actually does the suspend-to-RAM:

    sync; sync
    hdparm -F /dev/sda   ## flush drive write cache
    sleep 1              ## allow time for the flush to complete
    echo mem > /sys/power/state  ## suspend-to-RAM
 
Without the "sleep 1", it doesn't always eliminate the extra Retract,
so I hypothesize that the FLUSH_CACHE_EXT command is implemented in
an asynchronous fashion by the drive:  it returns immediately before
it has actually completed writing cached data to disk.  The "sleep 1"
seems to give it enough time to finish up, at least for me.

Cheers 

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

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ