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/

Reply via email to