On Wed, Apr 29, 2015 at 11:33 PM, Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> wrote: > On Wed, Apr 29, 2015 at 12:36 PM, Kirill A. Shutemov > <kirill@xxxxxxxxxxxxx> wrote: >> >> Emm.. I have hard time to understand how writable bit is enough to get >> soft-dirty-alike functionality. > > I don't think it is. > > For anonymous pages, maybe you can play tricks with comparing the page > 'anon_vma' with the vma->anon_vma. > > I haven't really thought that through, but does something like > > static inline bool page_is_dirty_in_vma(struct page *page, struct > vm_area_struct *vma) > { > struct anon_vma *anon_vma = vma->anon_vma; > > return page->mapping == (void *)anon_vma + PAGE_MAPPING_ANON; > } > > end up working as a "page has been dirtied in this mapping"? This's no longer true. After recent fixes for "anon_vma endless growing" new vma might reuse old anon_vma from grandparent vma. > > If the page came from another process and hasn't been written to, it > will have the anon_vma pointing to the originalting vma. > > I may be high on some bad drugs, though. As mentioned, I didn't really > think this through. > > Linus -- To unsubscribe from this list: send the line "unsubscribe linux-api" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html