Revision 251b97f552b1ad414cc5a9ccc8e4e94503edd5fc authored by Peter Zijlstra on 04 July 2008, 16:59:24 UTC, committed by Linus Torvalds on 04 July 2008, 17:40:04 UTC
Dirty page accounting accurately measures the amound of dirty pages in writable shared mappings by mapping the pages RO (as indicated by vma_wants_writenotify). We then trap on first write and call set_page_dirty() on the page, after which we map the page RW and continue execution. When we launder dirty pages, we call clear_page_dirty_for_io() which clears both the dirty flag, and maps the page RO again before we start writeout so that the story can repeat itself. vma_wants_writenotify() excludes VM_PFNMAP on the basis that we cannot do the regular dirty page stuff on raw PFNs and the memory isn't going anywhere anyway. The recently introduced VM_MIXEDMAP mixes both !pfn_valid() and pfn_valid() pages in a single mapping. We can't do dirty page accounting on !pfn_valid() pages as stated above, and mapping them RO causes them to be COW'ed on write, which breaks VM_SHARED semantics. Excluding VM_MIXEDMAP in vma_wants_writenotify() would mean we don't do the regular dirty page accounting for the pfn_valid() pages, which would bring back all the head-aches from inaccurate dirty page accounting. So instead, we let the !pfn_valid() pages get mapped RO, but fix them up unconditionally in the fault path. Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Nick Piggin <nickpiggin@yahoo.com.au> Acked-by: Hugh Dickins <hugh@veritas.com> Cc: "Jared Hulbert" <jaredeh@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
1 parent cde5353
File | Mode | Size |
---|---|---|
configs | ||
hpux | ||
kernel | ||
lib | ||
math-emu | ||
mm | ||
oprofile | ||
Kconfig | -rw-r--r-- | 5.7 KB |
Kconfig.debug | -rw-r--r-- | 513 bytes |
Makefile | -rw-r--r-- | 3.8 KB |
defpalo.conf | -rw-r--r-- | 789 bytes |
install.sh | -rw-r--r-- | 923 bytes |
nm | -rw-r--r-- | 194 bytes |
![swh spinner](/static/img/swh-spinner.gif)
Computing file changes ...