Message ID | 20221017202451.4951-2-vishal.moola@gmail.com |
---|---|
State | Superseded |
Headers | show |
Series | [v3,01/23] pagemap: Add filemap_grab_folio() | expand |
On Mon, Oct 17, 2022 at 1:24 PM Vishal Moola (Oracle) <vishal.moola@gmail.com> wrote: > > 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(). > > Signed-off-by: Vishal Moola (Oracle) <vishal.moola@gmail.com> > --- > include/linux/pagemap.h | 20 ++++++++++++++++++++ > 1 file changed, 20 insertions(+) > > diff --git a/include/linux/pagemap.h b/include/linux/pagemap.h > index bbccb4044222..74d87e37a142 100644 > --- a/include/linux/pagemap.h > +++ b/include/linux/pagemap.h > @@ -547,6 +547,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 > -- > 2.36.1 > Following up on the filemap-related patches (01/23, 02/23, 03/23, 04/23), does anyone have time to review them this week?
On Mon, Oct 17, 2022 at 01:24:29PM -0700, Vishal Moola (Oracle) wrote: > 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(). I'm still not loving the name, but it does have historical precedent and I can't think of a better one. Reviewed-by: Matthew Wilcox (Oracle) <willy@infradead.org>
diff --git a/include/linux/pagemap.h b/include/linux/pagemap.h index bbccb4044222..74d87e37a142 100644 --- a/include/linux/pagemap.h +++ b/include/linux/pagemap.h @@ -547,6 +547,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
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(). Signed-off-by: Vishal Moola (Oracle) <vishal.moola@gmail.com> --- include/linux/pagemap.h | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+)