2022-12-07 23:33:42

by Matthew Wilcox

[permalink] [raw]
Subject: Re: [PATCH v2 1/3] madvise: Convert madvise_cold_or_pageout_pte_range() to use folios

On Wed, Dec 07, 2022 at 03:01:50PM -0800, Vishal Moola (Oracle) wrote:
> @@ -424,28 +425,29 @@ static int madvise_cold_or_pageout_pte_range(pmd_t *pmd,
> page = vm_normal_page(vma, addr, ptent);
> if (!page || is_zone_device_page(page))
> continue;
> + folio = page_folio(page);

Maybe we should add a vm_normal_folio() first? That way we could get
rid of the 'struct page' in this function entirely.

> @@ -453,13 +455,13 @@ static int madvise_cold_or_pageout_pte_range(pmd_t *pmd,
> }
>
> /*
> - * Do not interfere with other mappings of this page and
> - * non-LRU page.
> + * Do not interfere with other mappings of this folio and
> + * non-LRU folio.
> */
> - if (!PageLRU(page) || page_mapcount(page) != 1)
> + if (!folio_test_lru(folio))

Why has the test for folio_mapcount() disappeared?


2022-12-07 23:57:25

by Vishal Moola

[permalink] [raw]
Subject: Re: [PATCH v2 1/3] madvise: Convert madvise_cold_or_pageout_pte_range() to use folios

On Wed, Dec 7, 2022 at 3:09 PM Matthew Wilcox <[email protected]> wrote:
>
> On Wed, Dec 07, 2022 at 03:01:50PM -0800, Vishal Moola (Oracle) wrote:
> > @@ -424,28 +425,29 @@ static int madvise_cold_or_pageout_pte_range(pmd_t *pmd,
> > page = vm_normal_page(vma, addr, ptent);
> > if (!page || is_zone_device_page(page))
> > continue;
> > + folio = page_folio(page);
>
> Maybe we should add a vm_normal_folio() first? That way we could get
> rid of the 'struct page' in this function entirely.

Yeah, I'll do that. Many other callers will benefit from it later as well.

> > @@ -453,13 +455,13 @@ static int madvise_cold_or_pageout_pte_range(pmd_t *pmd,
> > }
> >
> > /*
> > - * Do not interfere with other mappings of this page and
> > - * non-LRU page.
> > + * Do not interfere with other mappings of this folio and
> > + * non-LRU folio.
> > */
> > - if (!PageLRU(page) || page_mapcount(page) != 1)
> > + if (!folio_test_lru(folio))
>
> Why has the test for folio_mapcount() disappeared?

Oops, that page_mapcount() should have been replaced
with a folio_mapcount(). It appears I accidentally removed it.