(cc's reinstated) On Wed, 07 Mar 2007 09:09:50 +0100 Miklos Szeredi <miklos@szeredi.hu> wrote:I assume you refer to this: * FIXME! We still have a race here: if somebody * adds the page back to the page tables in * between the "page_mkclean()" and the "TestClearPageDirty()", * we might have it mapped without the dirty bit set. */ if (page_mkclean(page)) set_page_dirty(page); if (TestClearPageDirty(page)) { dec_zone_page_state(page, NR_FILE_DIRTY); return 1; } I guess the comment actually refers to a writefault after the set_page_dirty() and before the TestClearPageDirty(). The fault handler will run set_page_dirty() and will return to userspace to rerun the write. The page then gets set pte-dirty but this thread of control will now make the page !PageDirty() and will write it out. With Nick's proposed lock-the-page-in-pagefaults patches, we have lock_page() synchronisation between pagefaults and clear_page_dirty_for_io() which I think will fix this. -
| david | Re: Dual-Licensing Linux Kernel with GPL V2 and GPL V3 |
| Greg Kroah-Hartman | [PATCH 001/196] Chinese: Add the known_regression URI to the HOWTO |
| David Miller | Re: [RFC/PATCH] Documentation of kernel messages |
| Tony Lindgren | [PATCH 48/90] ARM: OMAP: I2C-1 init fix for 2430 |
git: | |
| Josip Rodin | bnx2_poll panicking kernel |
| Gerrit Renker | [PATCH 03/37] dccp: List management for new feature negotiation |
| Jarek Poplawski | [PATCH] pkt_sched: Destroy gen estimators under rtnl_lock(). |
| David Miller | [GIT]: Networking |
