mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-09 07:23:14 +00:00
filemap: add mapping_read_folio_gfp()
This is like read_cache_page_gfp() except it returns the folio instead of the precise page. Link: https://lkml.kernel.org/r/20230206162520.4029022-1-willy@infradead.org Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org> Cc: Charan Teja Kalla <quic_charante@quicinc.com> Cc: David Rientjes <rientjes@google.com> Cc: Hugh Dickins <hughd@google.com> Cc: Mark Hemment <markhemm@googlemail.com> Cc: Michal Hocko <mhocko@suse.com> Cc: Pavankumar Kondeti <quic_pkondeti@quicinc.com> Cc: Shakeel Butt <shakeelb@google.com> Cc: Suren Baghdasaryan <surenb@google.com> Cc: Vlastimil Babka <vbabka@suse.cz> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
aa02d3c174
commit
3e629597b8
@ -756,6 +756,8 @@ static inline struct page *grab_cache_page(struct address_space *mapping,
|
||||
|
||||
struct folio *read_cache_folio(struct address_space *, pgoff_t index,
|
||||
filler_t *filler, struct file *file);
|
||||
struct folio *mapping_read_folio_gfp(struct address_space *, pgoff_t index,
|
||||
gfp_t flags);
|
||||
struct page *read_cache_page(struct address_space *, pgoff_t index,
|
||||
filler_t *filler, struct file *file);
|
||||
extern struct page * read_cache_page_gfp(struct address_space *mapping,
|
||||
|
24
mm/filemap.c
24
mm/filemap.c
@ -3585,6 +3585,30 @@ struct folio *read_cache_folio(struct address_space *mapping, pgoff_t index,
|
||||
}
|
||||
EXPORT_SYMBOL(read_cache_folio);
|
||||
|
||||
/**
|
||||
* mapping_read_folio_gfp - Read into page cache, using specified allocation flags.
|
||||
* @mapping: The address_space for the folio.
|
||||
* @index: The index that the allocated folio will contain.
|
||||
* @gfp: The page allocator flags to use if allocating.
|
||||
*
|
||||
* This is the same as "read_cache_folio(mapping, index, NULL, NULL)", but with
|
||||
* any new memory allocations done using the specified allocation flags.
|
||||
*
|
||||
* The most likely error from this function is EIO, but ENOMEM is
|
||||
* possible and so is EINTR. If ->read_folio returns another error,
|
||||
* that will be returned to the caller.
|
||||
*
|
||||
* The function expects mapping->invalidate_lock to be already held.
|
||||
*
|
||||
* Return: Uptodate folio on success, ERR_PTR() on failure.
|
||||
*/
|
||||
struct folio *mapping_read_folio_gfp(struct address_space *mapping,
|
||||
pgoff_t index, gfp_t gfp)
|
||||
{
|
||||
return do_read_cache_folio(mapping, index, NULL, NULL, gfp);
|
||||
}
|
||||
EXPORT_SYMBOL(mapping_read_folio_gfp);
|
||||
|
||||
static struct page *do_read_cache_page(struct address_space *mapping,
|
||||
pgoff_t index, filler_t *filler, struct file *file, gfp_t gfp)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user