Re: [PATCHv9 13/36] mm: drop tail page refcounting

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 07/20/2015 04:20 PM, Kirill A. Shutemov wrote:
> Tail page refcounting is utterly complicated and painful to support.
> 
> It uses ->_mapcount on tail pages to store how many times this page is
> pinned. get_page() bumps ->_mapcount on tail page in addition to
> ->_count on head. This information is required by split_huge_page() to
> be able to distribute pins from head of compound page to tails during
> the split.
> 
> We will need ->_mapcount to account PTE mappings of subpages of the
> compound page. We eliminate need in current meaning of ->_mapcount in
> tail pages by forbidding split entirely if the page is pinned.
> 
> The only user of tail page refcounting is THP which is marked BROKEN for
> now.
> 
> Let's drop all this mess. It makes get_page() and put_page() much
> simpler.
> 
> Signed-off-by: Kirill A. Shutemov <kirill.shutemov@xxxxxxxxxxxxxxx>
> Tested-by: Sasha Levin <sasha.levin@xxxxxxxxxx>
> Tested-by: Aneesh Kumar K.V <aneesh.kumar@xxxxxxxxxxxxxxxxxx>
> Acked-by: Vlastimil Babka <vbabka@xxxxxxx>

Acked-by: Jerome Marchand <jmarchan@xxxxxxxxxx>

> ---
>  arch/mips/mm/gup.c            |   4 -
>  arch/powerpc/mm/hugetlbpage.c |  13 +-
>  arch/s390/mm/gup.c            |  13 +-
>  arch/sparc/mm/gup.c           |  14 +--
>  arch/x86/mm/gup.c             |   4 -
>  include/linux/mm.h            |  47 ++------
>  include/linux/mm_types.h      |  17 +--
>  mm/gup.c                      |  34 +-----
>  mm/huge_memory.c              |  41 +------
>  mm/hugetlb.c                  |   2 +-
>  mm/internal.h                 |  44 -------
>  mm/swap.c                     | 273 +++---------------------------------------
>  12 files changed, 40 insertions(+), 466 deletions(-)
> 


Attachment: signature.asc
Description: OpenPGP digital signature


[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]