On Fri, 24 Apr 2009, Robin Holt wrote: > I am not sure how you came to this conclusion. The address_space has > the vma's chained together and protected by the i_mmap_lock. That is > acquired prior to the cleaning operation. Additionally, the cleaning > operation walks the process's page tables and will remove/write-protect > the page before releasing the i_mmap_lock. > > Maybe I misunderstand. I hope I have not added confusion. Looking more closely, I think you're right. I thought that detach_vmas_to_be_unmapped() also removed them from mapping->i_mmap, but that is not the case, it only removes them from the process's mm_struct. The vma is only removed from ->i_mmap in unmap_region() _after_ zapping the pte's. This means that while the pte zapping is going on, any page faults will fail but page_mkclean() (and all of rmap) will continue to work. But then I don't see how we get a dirty pte without also first getting a page fault. Weird... Miklos -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html