pagemap: add filemap_grab_folio()
Patch series "Convert to filemap_get_folios_tag()", v5. This patch series replaces find_get_pages_range_tag() with filemap_get_folios_tag(). This also allows the removal of multiple calls to compound_head() throughout. It also makes a good chunk of the straightforward conversions to folios, and takes the opportunity to introduce a function that grabs a folio from the pagecache. This patch (of 23): Add function filemap_grab_folio() to grab a folio from the page cache. This function is meant to serve as a folio replacement for grab_cache_page, and is used to facilitate the removal of find_get_pages_range_tag(). Link: https://lkml.kernel.org/r/20230104211448.4804-1-vishal.moola@gmail.com Link: https://lkml.kernel.org/r/20230104211448.4804-2-vishal.moola@gmail.com Signed-off-by: Vishal Moola (Oracle) <vishal.moola@gmail.com> Reviewed-by: Matthew Wilcox (Oracle) <willy@infradead.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
Родитель
2cf1338454
Коммит
ee7a5906ff
|
@ -546,6 +546,26 @@ static inline struct folio *filemap_lock_folio(struct address_space *mapping,
|
|||
return __filemap_get_folio(mapping, index, FGP_LOCK, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* filemap_grab_folio - grab a folio from the page cache
|
||||
* @mapping: The address space to search
|
||||
* @index: The page index
|
||||
*
|
||||
* Looks up the page cache entry at @mapping & @index. If no folio is found,
|
||||
* a new folio is created. The folio is locked, marked as accessed, and
|
||||
* returned.
|
||||
*
|
||||
* Return: A found or created folio. NULL if no folio is found and failed to
|
||||
* create a folio.
|
||||
*/
|
||||
static inline struct folio *filemap_grab_folio(struct address_space *mapping,
|
||||
pgoff_t index)
|
||||
{
|
||||
return __filemap_get_folio(mapping, index,
|
||||
FGP_LOCK | FGP_ACCESSED | FGP_CREAT,
|
||||
mapping_gfp_mask(mapping));
|
||||
}
|
||||
|
||||
/**
|
||||
* find_get_page - find and get a page reference
|
||||
* @mapping: the address_space to search
|
||||
|
|
Загрузка…
Ссылка в новой задаче