FS#9775 - Premature and multiple storage_sleep() in buffering.c
Opened by Boris Gjenero (dreamlayers) - Saturday, 10 January 2009, 04:14 GMT
While 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.