Hi Yu Zhao: How is the unevictable folio managed in kernel? Thanks -----邮件原件----- 发件人: Yu Zhao <yuzhao@xxxxxxxxxx> 发送时间: 2023年9月15日 1:47 收件人: 江志国 <justinjiang@xxxxxxxx> 抄送: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>; linux-mm@xxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx; opensource.kernel <opensource.kernel@xxxxxxxx> 主题: Re: [PATCH] mm: mglru: fix add unevictable folio to lruvec->lists [你通常不会收到来自 yuzhao@xxxxxxxxxx 的电子邮件。请访问 https://aka.ms/LearnAboutSenderIdentification,以了解这一点为什么很重要;] On Thu, Sep 14, 2023 at 8:08 AM Zhiguo Jiang <justinjiang@xxxxxxxx> wrote: > > The unevictable folio is not supported to add to lruvec->lists in > lruvec_add_folio(). > > So use lruvec_add_folio_tail() instead of lruvec_add_folio() to add > unevictable folio to lruvec->lists in sort_folio(). > > Signed-off-by: Zhiguo Jiang <justinjiang@xxxxxxxx> > --- > mm/vmscan.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) mode change 100644 => > 100755 mm/vmscan.c > > diff --git a/mm/vmscan.c b/mm/vmscan.c index > 661615fa709b..a15e45632034 > --- a/mm/vmscan.c > +++ b/mm/vmscan.c > @@ -4237,7 +4237,7 @@ static bool sort_folio(struct lruvec *lruvec, struct folio *folio, struct scan_c > success = lru_gen_del_folio(lruvec, folio, true); > VM_WARN_ON_ONCE_FOLIO(!success, folio); > folio_set_unevictable(folio); > - lruvec_add_folio(lruvec, folio); > + lruvec_add_folio_tail(lruvec, folio); > __count_vm_events(UNEVICTABLE_PGCULLED, delta); > return true; > } NAK. lruvec_add_folio() { ... if (lru != LRU_UNEVICTABLE) list_add(&folio->lru, &lruvec->lists[lru]); } lruvec_add_folio_tail() { ... /* This is not expected to be used on LRU_UNEVICTABLE */ list_add_tail(&folio->lru, &lruvec->lists[lru]); } struct page { ... union { struct list_head lru; /* Or, for the Unevictable "LRU list" slot */ struct { ... }