[PATCH 2/2] filemap: Add __filemap_get_folio_mpol()

Gupta, Pankaj pankaj.gupta at amd.com
Mon Jun 23 06:15:30 UTC 2025


> This allows guest_memfd to pass in a memory policy.
> 
> Signed-off-by: Matthew Wilcox (Oracle) <willy at infradead.org>

Reviewed-by: Pankaj Gupta <pankaj.gupta at amd.com>

> ---
>   include/linux/pagemap.h | 10 ++++++++--
>   mm/filemap.c            | 10 ++++++----
>   2 files changed, 14 insertions(+), 6 deletions(-)
> 
> diff --git a/include/linux/pagemap.h b/include/linux/pagemap.h
> index c176aeeb38db..1cfbf7b8f573 100644
> --- a/include/linux/pagemap.h
> +++ b/include/linux/pagemap.h
> @@ -745,11 +745,17 @@ static inline fgf_t fgf_set_order(size_t size)
>   }
>   
>   void *filemap_get_entry(struct address_space *mapping, pgoff_t index);
> -struct folio *__filemap_get_folio(struct address_space *mapping, pgoff_t index,
> -		fgf_t fgp_flags, gfp_t gfp);
> +struct folio *__filemap_get_folio_mpol(struct address_space *mapping,
> +		pgoff_t index, fgf_t fgf_flags, gfp_t gfp, struct mempolicy *);
>   struct page *pagecache_get_page(struct address_space *mapping, pgoff_t index,
>   		fgf_t fgp_flags, gfp_t gfp);
>   
> +static inline struct folio *__filemap_get_folio(struct address_space *mapping,
> +		pgoff_t index, fgf_t fgf_flags, gfp_t gfp)
> +{
> +	return __filemap_get_folio_mpol(mapping, index, fgf_flags, gfp, NULL);
> +}
> +
>   /**
>    * filemap_get_folio - Find and get a folio.
>    * @mapping: The address_space to search.
> diff --git a/mm/filemap.c b/mm/filemap.c
> index a26df313207d..597d146cbb3a 100644
> --- a/mm/filemap.c
> +++ b/mm/filemap.c
> @@ -1896,11 +1896,12 @@ void *filemap_get_entry(struct address_space *mapping, pgoff_t index)
>   }
>   
>   /**
> - * __filemap_get_folio - Find and get a reference to a folio.
> + * __filemap_get_folio_mpol - Find and get a reference to a folio.
>    * @mapping: The address_space to search.
>    * @index: The page index.
>    * @fgp_flags: %FGP flags modify how the folio is returned.
>    * @gfp: Memory allocation flags to use if %FGP_CREAT is specified.
> + * @policy: NUMA memory allocation policy to follow.
>    *
>    * Looks up the page cache entry at @mapping & @index.
>    *
> @@ -1911,8 +1912,9 @@ void *filemap_get_entry(struct address_space *mapping, pgoff_t index)
>    *
>    * Return: The found folio or an ERR_PTR() otherwise.
>    */
> -struct folio *__filemap_get_folio(struct address_space *mapping, pgoff_t index,
> -		fgf_t fgp_flags, gfp_t gfp)
> +struct folio *__filemap_get_folio_mpol(struct address_space *mapping,
> +		pgoff_t index, fgf_t fgp_flags, gfp_t gfp,
> +		struct mempolicy *policy)
>   {
>   	struct folio *folio;
>   
> @@ -1982,7 +1984,7 @@ struct folio *__filemap_get_folio(struct address_space *mapping, pgoff_t index,
>   			err = -ENOMEM;
>   			if (order > min_order)
>   				alloc_gfp |= __GFP_NORETRY | __GFP_NOWARN;
> -			folio = filemap_alloc_folio(alloc_gfp, order, NULL);
> +			folio = filemap_alloc_folio(alloc_gfp, order, policy);
>   			if (!folio)
>   				continue;
>   




More information about the Linux-security-module-archive mailing list