Re: [PATCH 1/3] mm/memory-failure.c: avoid false-postive PageSwapCache test

From: David Hildenbrand
Date: Fri Apr 08 2022 - 04:52:21 EST


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."

>
> 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