This is the fifth version of my solution for the bug #2645: http://bugzilla.kernel.org/show_bug.cgi?id=2645
New since the previous version: 1) the case of retouching an already-dirty page pointed out by Miklos Szeredi has been correctly addressed; 2) a few cosmetic changes according to the latest feedback; 3) fixed the error of calling a possibly sleeping function from an atomic context. The design for the first item above was suggested by Peter Zijlstra: > It would require scanning the PTEs and marking them read-only again on > MS_ASYNC, and some more logic in set_page_dirty() because that currently > bails out early if the page in question is already dirty. Miklos' test program now produces the following output for the repeated calls to msync() with the MS_ASYNC flag: debian:~/miklos# ./miklos_test file begin 1200529196 1200529196 1200528798 write 1200529197 1200529197 1200528798 mmap 1200529197 1200529197 1200529198 b 1200529197 1200529197 1200529198 msync b 1200529199 1200529199 1200529198 c 1200529199 1200529199 1200529198 msync c 1200529201 1200529201 1200529198 d 1200529201 1200529201 1200529198 munmap 1200529201 1200529201 1200529198 close 1200529201 1200529201 1200529198 sync 1200529204 1200529204 1200529198 debian:~/miklos# Miklos' test program can be found using the following link: http://lkml.org/lkml/2008/1/14/104 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/