> Possibly, I didn't see a quick way to break that iteration.
Maybe i_mmap_lock isn't needed at all, since msync holds mmap_sem,
which protects the prio tree as well, no?
Yes :)
There could also be nasty performance corner cases, like having a huge
file mapped thousands of times, and having only a couple of pages
dirtied between MS_ASYNC invocations. Then most of that page table
walking would be just unnecessary overhead.
There's something to be said for walking only the dirty pages, and
doing page_mkclean on them, even if in some cases that would be
slower.
But I have a strong feeling of deja vu, and last time it ended with
Andrew not liking the whole thing...
Miklos
--