From 9824ded0b01fa76d2dc9c4e7fb36d27a2e880446 Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Sat, 20 Feb 2010 10:51:53 +0000 Subject: [PATCH] cache_io(): Also requeue the last touched page to keep things roughly LRU sorted. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35530 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/system/kernel/cache/file_cache.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/system/kernel/cache/file_cache.cpp b/src/system/kernel/cache/file_cache.cpp index 0bd3993b8b..f88adc932b 100644 --- a/src/system/kernel/cache/file_cache.cpp +++ b/src/system/kernel/cache/file_cache.cpp @@ -824,13 +824,6 @@ cache_io(void* _cacheRef, void* cookie, off_t offset, addr_t buffer, 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 @@ cache_io(void* _cacheRef, void* cookie, off_t offset, addr_t buffer, 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;