I really like the cleanups and the removal of code no one is using anyway. For the series: Reviewed-by: William Kucharski <william.kucharski@xxxxxxxxxx> > On Dec 20, 2021, at 1:59 PM, Matthew Wilcox (Oracle) <willy@xxxxxxxxxxxxx> wrote: > > None of the callers care about the total_map_swapcount() any more. > > Signed-off-by: Matthew Wilcox (Oracle) <willy@xxxxxxxxxxxxx> > --- > include/linux/swap.h | 6 +++--- > mm/huge_memory.c | 2 +- > mm/khugepaged.c | 2 +- > mm/memory.c | 2 +- > mm/swapfile.c | 8 +------- > 5 files changed, 7 insertions(+), 13 deletions(-) > > diff --git a/include/linux/swap.h b/include/linux/swap.h > index d1ea44b31f19..bdccbf1efa61 100644 > --- a/include/linux/swap.h > +++ b/include/linux/swap.h > @@ -514,7 +514,7 @@ extern int __swp_swapcount(swp_entry_t entry); > extern int swp_swapcount(swp_entry_t entry); > extern struct swap_info_struct *page_swap_info(struct page *); > extern struct swap_info_struct *swp_swap_info(swp_entry_t entry); > -extern bool reuse_swap_page(struct page *, int *); > +extern bool reuse_swap_page(struct page *); > extern int try_to_free_swap(struct page *); > struct backing_dev_info; > extern int init_swap_address_space(unsigned int type, unsigned long nr_pages); > @@ -680,8 +680,8 @@ static inline int swp_swapcount(swp_entry_t entry) > return 0; > } > > -#define reuse_swap_page(page, total_map_swapcount) \ > - (page_trans_huge_mapcount(page, total_map_swapcount) == 1) > +#define reuse_swap_page(page) \ > + (page_trans_huge_mapcount(page, NULL) == 1) > > static inline int try_to_free_swap(struct page *page) > { > diff --git a/mm/huge_memory.c b/mm/huge_memory.c > index e5483347291c..b61fbe95c856 100644 > --- a/mm/huge_memory.c > +++ b/mm/huge_memory.c > @@ -1322,7 +1322,7 @@ vm_fault_t do_huge_pmd_wp_page(struct vm_fault *vmf) > * We can only reuse the page if nobody else maps the huge page or it's > * part. > */ > - if (reuse_swap_page(page, NULL)) { > + if (reuse_swap_page(page)) { > pmd_t entry; > entry = pmd_mkyoung(orig_pmd); > entry = maybe_pmd_mkwrite(pmd_mkdirty(entry), vma); > diff --git a/mm/khugepaged.c b/mm/khugepaged.c > index e99101162f1a..11794bdf513a 100644 > --- a/mm/khugepaged.c > +++ b/mm/khugepaged.c > @@ -681,7 +681,7 @@ static int __collapse_huge_page_isolate(struct vm_area_struct *vma, > goto out; > } > if (!pte_write(pteval) && PageSwapCache(page) && > - !reuse_swap_page(page, NULL)) { > + !reuse_swap_page(page)) { > /* > * Page is in the swap cache and cannot be re-used. > * It cannot be collapsed into a THP. > diff --git a/mm/memory.c b/mm/memory.c > index 8f1de811a1dc..dd85fd07cb24 100644 > --- a/mm/memory.c > +++ b/mm/memory.c > @@ -3626,7 +3626,7 @@ vm_fault_t do_swap_page(struct vm_fault *vmf) > inc_mm_counter_fast(vma->vm_mm, MM_ANONPAGES); > dec_mm_counter_fast(vma->vm_mm, MM_SWAPENTS); > pte = mk_pte(page, vma->vm_page_prot); > - if ((vmf->flags & FAULT_FLAG_WRITE) && reuse_swap_page(page, NULL)) { > + if ((vmf->flags & FAULT_FLAG_WRITE) && reuse_swap_page(page)) { > pte = maybe_mkwrite(pte_mkdirty(pte), vma); > vmf->flags &= ~FAULT_FLAG_WRITE; > ret |= VM_FAULT_WRITE; > diff --git a/mm/swapfile.c b/mm/swapfile.c > index e59e08ef46e1..a4f48189300a 100644 > --- a/mm/swapfile.c > +++ b/mm/swapfile.c > @@ -1668,12 +1668,8 @@ static int page_trans_huge_map_swapcount(struct page *page, int *total_mapcount, > * to it. And as a side-effect, free up its swap: because the old content > * on disk will never be read, and seeking back there to write new content > * later would only waste time away from clustering. > - * > - * NOTE: total_map_swapcount should not be relied upon by the caller if > - * reuse_swap_page() returns false, but it may be always overwritten > - * (see the other implementation for CONFIG_SWAP=n). > */ > -bool reuse_swap_page(struct page *page, int *total_map_swapcount) > +bool reuse_swap_page(struct page *page) > { > int count, total_mapcount, total_swapcount; > > @@ -1682,8 +1678,6 @@ bool reuse_swap_page(struct page *page, int *total_map_swapcount) > return false; > count = page_trans_huge_map_swapcount(page, &total_mapcount, > &total_swapcount); > - if (total_map_swapcount) > - *total_map_swapcount = total_mapcount + total_swapcount; > if (count == 1 && PageSwapCache(page) && > (likely(!PageTransCompound(page)) || > /* The remaining swap count will be freed soon */ > -- > 2.33.0 > >