mm: add folio_add_lru_vma()

Convert lru_cache_add_inactive_or_unevictable() to folio_add_lru_vma()
and add a compatibility wrapper.

Link: https://lkml.kernel.org/r/20220902194653.1739778-6-willy@infradead.org
Signed-off-by: "Matthew Wilcox (Oracle)" <willy@infradead.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
Matthew Wilcox (Oracle) 2022-09-02 20:46:01 +01:00 committed by Andrew Morton
parent d788f5b374
commit 681ecf6301
3 changed files with 20 additions and 15 deletions

View file

@ -379,11 +379,11 @@ extern unsigned long totalreserve_pages;
/* linux/mm/swap.c */ /* linux/mm/swap.c */
extern void lru_note_cost(struct lruvec *lruvec, bool file, void lru_note_cost(struct lruvec *lruvec, bool file, unsigned int nr_pages);
unsigned int nr_pages); void lru_note_cost_folio(struct folio *);
extern void lru_note_cost_folio(struct folio *); void folio_add_lru(struct folio *);
extern void folio_add_lru(struct folio *); void folio_add_lru_vma(struct folio *, struct vm_area_struct *);
extern void lru_cache_add(struct page *); void lru_cache_add(struct page *);
void mark_page_accessed(struct page *); void mark_page_accessed(struct page *);
void folio_mark_accessed(struct folio *); void folio_mark_accessed(struct folio *);

View file

@ -88,6 +88,12 @@ void lru_cache_add(struct page *page)
} }
EXPORT_SYMBOL(lru_cache_add); EXPORT_SYMBOL(lru_cache_add);
void lru_cache_add_inactive_or_unevictable(struct page *page,
struct vm_area_struct *vma)
{
folio_add_lru_vma(page_folio(page), vma);
}
int add_to_page_cache_lru(struct page *page, struct address_space *mapping, int add_to_page_cache_lru(struct page *page, struct address_space *mapping,
pgoff_t index, gfp_t gfp) pgoff_t index, gfp_t gfp)
{ {

View file

@ -537,22 +537,21 @@ void folio_add_lru(struct folio *folio)
EXPORT_SYMBOL(folio_add_lru); EXPORT_SYMBOL(folio_add_lru);
/** /**
* lru_cache_add_inactive_or_unevictable * folio_add_lru_vma() - Add a folio to the appropate LRU list for this VMA.
* @page: the page to be added to LRU * @folio: The folio to be added to the LRU.
* @vma: vma in which page is mapped for determining reclaimability * @vma: VMA in which the folio is mapped.
* *
* Place @page on the inactive or unevictable LRU list, depending on its * If the VMA is mlocked, @folio is added to the unevictable list.
* evictability. * Otherwise, it is treated the same way as folio_add_lru().
*/ */
void lru_cache_add_inactive_or_unevictable(struct page *page, void folio_add_lru_vma(struct folio *folio, struct vm_area_struct *vma)
struct vm_area_struct *vma)
{ {
VM_BUG_ON_PAGE(PageLRU(page), page); VM_BUG_ON_FOLIO(folio_test_lru(folio), folio);
if (unlikely((vma->vm_flags & (VM_LOCKED | VM_SPECIAL)) == VM_LOCKED)) if (unlikely((vma->vm_flags & (VM_LOCKED | VM_SPECIAL)) == VM_LOCKED))
mlock_new_page(page); mlock_new_page(&folio->page);
else else
lru_cache_add(page); folio_add_lru(folio);
} }
/* /*