From 3d2595d16a4bfa18041f1bcaa5eeb34b0865d008 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Wed, 9 Jan 2008 14:56:50 +0000 Subject: [PATCH] The modified temporary page counter could go out of sync pretty easily. This could cause the page writer to run endlessly. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23309 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/system/kernel/vm/vm_page.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/system/kernel/vm/vm_page.cpp b/src/system/kernel/vm/vm_page.cpp index cf648aa34f..80745cd308 100644 --- a/src/system/kernel/vm/vm_page.cpp +++ b/src/system/kernel/vm/vm_page.cpp @@ -662,7 +662,8 @@ set_page_state_nolock(vm_page *page, int pageState) if (pageState != PAGE_STATE_INACTIVE && page->cache != NULL) panic("to be freed page %p has cache", page); - } else if (pageState == PAGE_STATE_MODIFIED && page->cache->temporary) + } + if (pageState == PAGE_STATE_MODIFIED && page->cache->temporary) sModifiedTemporaryPages++; else if (page->state == PAGE_STATE_MODIFIED && page->cache->temporary) sModifiedTemporaryPages--; @@ -682,6 +683,9 @@ set_page_state_nolock(vm_page *page, int pageState) } +/*! Moves a modified page into either the active or inactive page queue + depending on its usage count and wiring. +*/ static void move_page_to_active_or_inactive_queue(vm_page *page, bool dequeued) {