Messages in this thread | | | From | Naoya Horiguchi <> | Subject | Re: [PATCH v3 2/4] pagemap: add mmap-exclusive bit for marking pages mapped only here | Date | Wed, 17 Jun 2015 08:11:51 +0000 |
| |
On Tue, Jun 09, 2015 at 11:00:17PM +0300, Konstantin Khlebnikov wrote: > From: Konstantin Khlebnikov <khlebnikov@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 <khlebnikov@yandex-team.ru> > Link: http://lkml.kernel.org/r/CAEVpBa+_RyACkhODZrRvQLs80iy0sqpdrd0AaP_-tgnX3Y9yNQ@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
| |