This is the bug/patch tracker for Rockbox. Click here for more information.
Quick links: Bugs · Patches · Rockbox frontpage
FS#9775 - Premature and multiple storage_sleep() in buffering.c
Attached to Project:
Rockbox
Opened by Boris Gjenero (dreamlayers) - Saturday, 10 January 2009, 05:14 GMT+2
Opened by Boris Gjenero (dreamlayers) - Saturday, 10 January 2009, 05:14 GMT+2
|
DetailsWhile examining disk performance with
Experimentation with shows that the storage_sleep() part of fill_buffer() (in apps/buffering.c) is executed early in the buffering and it is not executed at the end. With another album where spindown happens properly, ata_sleep() is called twice. Note that ata_sleep() just sets last_disk_activity, and sleep happens over half a second later if there is no disk activity during that period and last_user_activity has timed out. I think this is a race condition based on how dircache and transfer rates change things. I wonder if it is related to The data mentioned is located at http://spreadsheets.google.com/ccc?key=pkeRcfM0sg949P3a5EYXtew and the delayed spindown is seen in the EP7 PIO test. In that data, also note how sectors written are 5, 10 or 15, with differences between different tests with the same album. I have a 30GB 5th generation iPod, but I expect this issue affects all SW-codec players. |
This task depends upon
Sorry about the typo earlier. I meant increasing disk timeout prolongs extra spinning time, not sleeping time. I need to proofread more before I submit.
I was just looking at fill_buffer-if_interrupted.patch. It is still relevant, but it doesn't improve anything because the extra storage_sleep() that can happen there shouldn't have any effect.