From 4784eca19deaf9aee8088900b6a579bede9d6452 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Mon, 22 Aug 2005 20:31:32 +0000 Subject: [PATCH] cache_io() did not set the state of a page to PAGE_STATE_MODIFIED when it wrote to it - if that page was read from disk unmodified before (or written back in the mean time), the updated contents coult not be detected, and therefore, were never written back. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14048 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/system/kernel/cache/file_cache.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/system/kernel/cache/file_cache.cpp b/src/system/kernel/cache/file_cache.cpp index 2da1b45649..f63bc97b2b 100644 --- a/src/system/kernel/cache/file_cache.cpp +++ b/src/system/kernel/cache/file_cache.cpp @@ -784,9 +784,13 @@ cache_io(void *_cacheRef, off_t offset, addr_t buffer, size_t *_size, bool doWri } // and copy the contents of the page already in memory - if (doWrite) + if (doWrite) { user_memcpy((void *)(virtualAddress + pageOffset), (void *)buffer, bytesInPage); - else + + // make sure the page is in the modified list + if (page->state != PAGE_STATE_MODIFIED) + vm_page_set_state(page, PAGE_STATE_MODIFIED); + } else user_memcpy((void *)buffer, (void *)(virtualAddress + pageOffset), bytesInPage); vm_put_physical_page(virtualAddress); @@ -1001,7 +1005,7 @@ file_cache_init_post_boot_device(void) // ToDo: get cache module out of driver settings if (get_module("file_cache/launch_speedup/v1", (module_info **)&sCacheModule) == B_OK) { - dprintf("** opened launch speedup\n"); + dprintf("** opened launch speedup: %Ld\n", system_time()); } else dprintf("** could not open launch speedup!\n");