On Tue, Mar 29, 2022 at 09:26:14PM +0800, Miaohe Lin wrote: > -unsigned long reclaim_pages(struct list_head *page_list) > +static inline unsigned int reclaim_page_list(struct list_head *page_list, struct pglist_data *pgdat) > { > - int nid = NUMA_NO_NODE; > - unsigned int nr_reclaimed = 0; > - LIST_HEAD(node_page_list); > struct reclaim_stat dummy_stat; > + unsigned int nr_reclaimed; > struct page *page; > - unsigned int noreclaim_flag; > struct scan_control sc = { > .gfp_mask = GFP_KERNEL, > .may_writepage = 1, > @@ -2529,6 +2526,24 @@ unsigned long reclaim_pages(struct list_head *page_list) > .no_demotion = 1, > }; > > + nr_reclaimed = shrink_page_list(page_list, pgdat, &sc, &dummy_stat, false); > + while (!list_empty(page_list)) { > + page = lru_to_page(page_list); > + list_del(&page->lru); > + putback_lru_page(page); Why wouldn't you use a folio here?