On Mon 07-03-22 13:10:08, Michal Hocko wrote: > On Sat 05-03-22 02:17:37, Yu Zhao wrote: > [...] > > diff --git a/mm/swap.c b/mm/swap.c > > index bcf3ac288b56..7fd99f037ca7 100644 > > --- a/mm/swap.c > > +++ b/mm/swap.c > > @@ -563,7 +559,7 @@ static void lru_deactivate_file_fn(struct page > > *page, struct lruvec *lruvec) > > > > static void lru_deactivate_fn(struct page *page, struct lruvec *lruvec) > > { > > - if (PageActive(page) && !PageUnevictable(page)) { > > + if (!PageUnevictable(page)) { > > int nr_pages = thp_nr_pages(page); > > > > del_page_from_lru_list(page, lruvec); > > @@ -677,7 +673,7 @@ void deactivate_file_page(struct page *page) > > */ > > void deactivate_page(struct page *page) > > { > > - if (PageLRU(page) && PageActive(page) && !PageUnevictable(page)) { > > + if (PageLRU(page) && !PageUnevictable(page)) { > > struct pagevec *pvec; > > > > local_lock(&lru_pvecs.lock); > > > > I'll leave it to Minchan to decide whether this is worth fixing, > > together with this one: > > There doesn't seem to be any dependency on the PageActive anymore. I do > remember we have relied on the PageActive to move from the active list > to the inactive. This is not the case anymore but I am wondering whether > above is really sufficient. If you are deactivating an inactive page > then I would expect you want to move that page in the LRU as well. In > other words don't you want > if (page_active) > add_page_to_lru_list > else > add_page_to_lru_list_tail Do you plan to send an official patch? -- Michal Hocko SUSE Labs