On Tue, Jun 09, 2015 at 11:00:17PM +0300, Konstantin Khlebnikov wrote: > From: Konstantin Khlebnikov <khlebni...@yandex-team.ru> > > This patch sets bit 56 in pagemap if this page is mapped only once. > It allows to detect exclusively used pages without exposing PFN: > > present file exclusive state > 0 0 0 non-present > 1 1 0 file page mapped somewhere else > 1 1 1 file page mapped only here > 1 0 0 anon non-CoWed page (shared with parent/child) > 1 0 1 anon CoWed page (or never forked) > > CoWed pages in MAP_FILE|MAP_PRIVATE areas are anon in this context. > > Mmap-exclusive bit doesn't reflect potential page-sharing via swapcache: > page could be mapped once but has several swap-ptes which point to it. > Application could detect that by swap bit in pagemap entry and touch > that pte via /proc/pid/mem to get real information. > > Signed-off-by: Konstantin Khlebnikov <khlebni...@yandex-team.ru> > Link: > http://lkml.kernel.org/r/caevpba+_ryackhodzrrvqls80iy0sqpdrd0aap_-tgnx3y9...@mail.gmail.com > > --- > > v2: > * handle transparent huge pages > * invert bit and rename shared -> exclusive (less confusing name) > --- ...
> @@ -1119,6 +1122,13 @@ static int pagemap_pte_range(pmd_t *pmd, unsigned long > addr, unsigned long end, > else > pmd_flags2 = 0; > > + if (pmd_present(*pmd)) { > + struct page *page = pmd_page(*pmd); > + > + if (page_mapcount(page) == 1) > + pmd_flags2 |= __PM_MMAP_EXCLUSIVE; > + } > + Could you do the same thing for huge_pte_to_pagemap_entry(), too? Thanks, Naoya Horiguchi -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/