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
This commit is contained in:
+7
-7
@@ -824,13 +824,6 @@ cache_io(void* _cacheRef, void* cookie, off_t offset, addr_t buffer,
|
|||||||
cache->MarkPageUnbusy(page);
|
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
|
// If it is cached only, requeue the page, so the respective queue
|
||||||
// roughly remains LRU first sorted.
|
// roughly remains LRU first sorted.
|
||||||
if (page->state == PAGE_STATE_CACHED
|
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);
|
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
|
// prepare a potential gap request
|
||||||
lastBuffer = buffer + bytesInPage;
|
lastBuffer = buffer + bytesInPage;
|
||||||
lastLeft = bytesLeft - bytesInPage;
|
lastLeft = bytesLeft - bytesInPage;
|
||||||
|
|||||||
Reference in New Issue
Block a user