mm/huge_memory: remove stale page_trans_huge_mapcount()
All users are gone, let's remove it. Link: https://lkml.kernel.org/r/20220131162940.210846-9-david@redhat.com Signed-off-by: David Hildenbrand <david@redhat.com> Acked-by: Vlastimil Babka <vbabka@suse.cz> Cc: Andrea Arcangeli <aarcange@redhat.com> Cc: Christoph Hellwig <hch@lst.de> Cc: David Rientjes <rientjes@google.com> Cc: Don Dutile <ddutile@redhat.com> Cc: Hugh Dickins <hughd@google.com> Cc: Jan Kara <jack@suse.cz> Cc: Jann Horn <jannh@google.com> Cc: Jason Gunthorpe <jgg@nvidia.com> Cc: John Hubbard <jhubbard@nvidia.com> Cc: Kirill A. Shutemov <kirill.shutemov@linux.intel.com> Cc: Liang Zhang <zhangliang5@huawei.com> Cc: Matthew Wilcox (Oracle) <willy@infradead.org> Cc: Michal Hocko <mhocko@kernel.org> Cc: Mike Kravetz <mike.kravetz@oracle.com> Cc: Mike Rapoport <rppt@linux.ibm.com> Cc: Nadav Amit <nadav.amit@gmail.com> Cc: Oleg Nesterov <oleg@redhat.com> Cc: Peter Xu <peterx@redhat.com> Cc: Rik van Riel <riel@surriel.com> Cc: Roman Gushchin <roman.gushchin@linux.dev> Cc: Shakeel Butt <shakeelb@google.com> Cc: Yang Shi <shy828301@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
03104c2c5d
commit
55c62fa7c5
@ -834,16 +834,11 @@ static inline int total_mapcount(struct page *page)
|
||||
return folio_mapcount(page_folio(page));
|
||||
}
|
||||
|
||||
int page_trans_huge_mapcount(struct page *page);
|
||||
#else
|
||||
static inline int total_mapcount(struct page *page)
|
||||
{
|
||||
return page_mapcount(page);
|
||||
}
|
||||
static inline int page_trans_huge_mapcount(struct page *page)
|
||||
{
|
||||
return page_mapcount(page);
|
||||
}
|
||||
#endif
|
||||
|
||||
static inline struct page *virt_to_head_page(const void *x)
|
||||
|
@ -2483,54 +2483,6 @@ static void __split_huge_page(struct page *page, struct list_head *list,
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* This calculates accurately how many mappings a transparent hugepage
|
||||
* has (unlike page_mapcount() which isn't fully accurate). This full
|
||||
* accuracy is primarily needed to know if copy-on-write faults can
|
||||
* reuse the page and change the mapping to read-write instead of
|
||||
* copying them. At the same time this returns the total_mapcount too.
|
||||
*
|
||||
* The function returns the highest mapcount any one of the subpages
|
||||
* has. If the return value is one, even if different processes are
|
||||
* mapping different subpages of the transparent hugepage, they can
|
||||
* all reuse it, because each process is reusing a different subpage.
|
||||
*
|
||||
* The total_mapcount is instead counting all virtual mappings of the
|
||||
* subpages. If the total_mapcount is equal to "one", it tells the
|
||||
* caller all mappings belong to the same "mm" and in turn the
|
||||
* anon_vma of the transparent hugepage can become the vma->anon_vma
|
||||
* local one as no other process may be mapping any of the subpages.
|
||||
*
|
||||
* It would be more accurate to replace page_mapcount() with
|
||||
* page_trans_huge_mapcount(), however we only use
|
||||
* page_trans_huge_mapcount() in the copy-on-write faults where we
|
||||
* need full accuracy to avoid breaking page pinning, because
|
||||
* page_trans_huge_mapcount() is slower than page_mapcount().
|
||||
*/
|
||||
int page_trans_huge_mapcount(struct page *page)
|
||||
{
|
||||
int i, ret;
|
||||
|
||||
/* hugetlbfs shouldn't call it */
|
||||
VM_BUG_ON_PAGE(PageHuge(page), page);
|
||||
|
||||
if (likely(!PageTransCompound(page)))
|
||||
return atomic_read(&page->_mapcount) + 1;
|
||||
|
||||
page = compound_head(page);
|
||||
|
||||
ret = 0;
|
||||
for (i = 0; i < thp_nr_pages(page); i++) {
|
||||
int mapcount = atomic_read(&page[i]._mapcount) + 1;
|
||||
ret = max(ret, mapcount);
|
||||
}
|
||||
|
||||
if (PageDoubleMap(page))
|
||||
ret -= 1;
|
||||
|
||||
return ret + compound_mapcount(page);
|
||||
}
|
||||
|
||||
/* Racy check whether the huge page can be split */
|
||||
bool can_split_folio(struct folio *folio, int *pextra_pins)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user