| From: Jens Axboe <axboe@kernel.dk> |
| Subject: mm/readahead: add folio allocation helper |
| Date: Fri, 20 Dec 2024 08:47:41 -0700 |
| |
| Just a wrapper around filemap_alloc_folio() for now, but add it in |
| preparation for modifying the folio based on the 'ractl' being passed in. |
| |
| No functional changes in this patch. |
| |
| Link: https://lkml.kernel.org/r/20241220154831.1086649-4-axboe@kernel.dk |
| Signed-off-by: Jens Axboe <axboe@kernel.dk> |
| Reviewed-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com> |
| Reviewed-by: Matthew Wilcox (Oracle) <willy@infradead.org> |
| Cc: Brian Foster <bfoster@redhat.com> |
| Cc: Chris Mason <clm@meta.com> |
| Cc: Christoph Hellwig <hch@lst.de> |
| Cc: Johannes Weiner <hannes@cmpxchg.org> |
| Signed-off-by: Andrew Morton <akpm@linux-foundation.org> |
| --- |
| |
| mm/readahead.c | 16 +++++++++++----- |
| 1 file changed, 11 insertions(+), 5 deletions(-) |
| |
| --- a/mm/readahead.c~mm-readahead-add-folio-allocation-helper |
| +++ a/mm/readahead.c |
| @@ -178,6 +178,12 @@ static void read_pages(struct readahead_ |
| BUG_ON(readahead_count(rac)); |
| } |
| |
| +static struct folio *ractl_alloc_folio(struct readahead_control *ractl, |
| + gfp_t gfp_mask, unsigned int order) |
| +{ |
| + return filemap_alloc_folio(gfp_mask, order); |
| +} |
| + |
| /** |
| * page_cache_ra_unbounded - Start unchecked readahead. |
| * @ractl: Readahead control. |
| @@ -255,8 +261,8 @@ void page_cache_ra_unbounded(struct read |
| continue; |
| } |
| |
| - folio = filemap_alloc_folio(gfp_mask, |
| - mapping_min_folio_order(mapping)); |
| + folio = ractl_alloc_folio(ractl, gfp_mask, |
| + mapping_min_folio_order(mapping)); |
| if (!folio) |
| break; |
| |
| @@ -426,7 +432,7 @@ static inline int ra_alloc_folio(struct |
| pgoff_t mark, unsigned int order, gfp_t gfp) |
| { |
| int err; |
| - struct folio *folio = filemap_alloc_folio(gfp, order); |
| + struct folio *folio = ractl_alloc_folio(ractl, gfp, order); |
| |
| if (!folio) |
| return -ENOMEM; |
| @@ -751,7 +757,7 @@ void readahead_expand(struct readahead_c |
| if (folio && !xa_is_value(folio)) |
| return; /* Folio apparently present */ |
| |
| - folio = filemap_alloc_folio(gfp_mask, min_order); |
| + folio = ractl_alloc_folio(ractl, gfp_mask, min_order); |
| if (!folio) |
| return; |
| |
| @@ -780,7 +786,7 @@ void readahead_expand(struct readahead_c |
| if (folio && !xa_is_value(folio)) |
| return; /* Folio apparently present */ |
| |
| - folio = filemap_alloc_folio(gfp_mask, min_order); |
| + folio = ractl_alloc_folio(ractl, gfp_mask, min_order); |
| if (!folio) |
| return; |
| |
| _ |