Author: bonefish Date: 2010-02-20 11:51:53 +0100 (Sat, 20 Feb 2010) New Revision: 35530 Changeset: http://dev.haiku-os.org/changeset/35530/haiku Modified: haiku/trunk/src/system/kernel/cache/file_cache.cpp Log: cache_io(): Also requeue the last touched page to keep things roughly LRU sorted. Modified: haiku/trunk/src/system/kernel/cache/file_cache.cpp =================================================================== --- haiku/trunk/src/system/kernel/cache/file_cache.cpp 2010-02-20 10:46:50 UTC (rev 35529) +++ haiku/trunk/src/system/kernel/cache/file_cache.cpp 2010-02-20 10:51:53 UTC (rev 35530) @@ -824,13 +824,6 @@ cache->MarkPageUnbusy(page); } - if (bytesLeft <= bytesInPage) { - // we've read the last page, so we're done! - locker.Unlock(); - vm_page_unreserve_pages(&reservation); - return B_OK; - } - // If it is cached only, requeue the page, so the respective queue // roughly remains LRU first sorted. if (page->state == PAGE_STATE_CACHED @@ -840,6 +833,13 @@ DEBUG_PAGE_ACCESS_END(page); } + if (bytesLeft <= bytesInPage) { + // we've read the last page, so we're done! + locker.Unlock(); + vm_page_unreserve_pages(&reservation); + return B_OK; + } + // prepare a potential gap request lastBuffer = buffer + bytesInPage; lastLeft = bytesLeft - bytesInPage;