On 2022/4/9 1:32, Yang Shi wrote: > On Fri, Apr 8, 2022 at 1:52 AM David Hildenbrand <david@xxxxxxxxxx> wrote: >> >> On 07.04.22 15:03, Miaohe Lin wrote: >>> PageSwapCache is only reliable when PageAnon is true because PG_swapcache >>> serves as PG_owner_priv_1 which can be used by fs if it's pagecache page. >>> So we should test PageAnon to distinguish pagecache page from swapcache >>> page to avoid false-postive PageSwapCache test. >> >> Well, that's not quite correct. Just because a page is PageAnon() >> doesn't mean that it's in the swapache. It means that it might be in the >> swapcache but cannot be in the pagecache. >> >> Maybe you wanted to say >> >> "So we should test PageAnon() to distinguish pagecache pages from >> anonymous pages." That's indeed what I want to say. > > Yeah, I agree. The patch looks fine to me with David's comment addressed. Many thanks for both of you! Will do it in v3. > >> >>> >>> Signed-off-by: Miaohe Lin <linmiaohe@xxxxxxxxxx> >>> --- >>> mm/memory-failure.c | 2 +- >>> 1 file changed, 1 insertion(+), 1 deletion(-) >>> >>> diff --git a/mm/memory-failure.c b/mm/memory-failure.c >>> index ef402b490663..2e97302d62e4 100644 >>> --- a/mm/memory-failure.c >>> +++ b/mm/memory-failure.c >>> @@ -2262,7 +2262,7 @@ static int __soft_offline_page(struct page *page) >>> return 0; >>> } >>> >>> - if (!PageHuge(page) && PageLRU(page) && !PageSwapCache(page)) >>> + if (!PageHuge(page) && PageLRU(page) && !PageAnon(page)) >>> /* >>> * Try to invalidate first. This should work for >>> * non dirty unmapped page cache pages. >> >> >> -- >> Thanks, >> >> David / dhildenb >> >> > . >