[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <Y5iNiNUoNlupyhow@casper.infradead.org>
Date: Tue, 13 Dec 2022 14:34:48 +0000
From: Matthew Wilcox <willy@...radead.org>
To: Kefeng Wang <wangkefeng.wang@...wei.com>
Cc: Andrew Morton <akpm@...ux-foundation.org>,
David Hildenbrand <david@...hat.com>,
Oscar Salvador <osalvador@...e.de>,
SeongJae Park <sj@...nel.org>, linux-mm@...ck.org,
linux-kernel@...r.kernel.org, damon@...ts.linux.dev,
vishal.moola@...il.com
Subject: Re: [PATCH -next 2/8] mm: page_idle: Convert page idle to use folios
On Tue, Dec 13, 2022 at 05:27:29PM +0800, Kefeng Wang wrote:
> -static struct page *page_idle_get_page(unsigned long pfn)
> +static struct folio *folio_idle_get_folio(unsigned long pfn)
> {
> - struct page *page = pfn_to_online_page(pfn);
> + struct folio *folio = pfn_to_online_folio(pfn);
>
> - if (!page || !PageLRU(page) ||
> - !get_page_unless_zero(page))
> + if (!folio || !folio_test_lru(folio) || !folio_try_get(folio))
> return NULL;
You've changed the semantics here, and I suspect will cause breakage
as a result. Before if you called page_idle_get_page() on a tail page,
you got a NULL pointer returned. Now you get the folio that contains
that tail page.
I think you have to continue to call pfn_to_online_page() and do
the conversion to folio manually in this function. By all means
convert this function to return the folio, but you need to take a
little more care.
Powered by blists - more mailing lists