| From: Jens Axboe <axboe@kernel.dk> |
| Subject: mm/readahead: add readahead_control->dropbehind member |
| Date: Fri, 20 Dec 2024 08:47:43 -0700 |
| |
| If ractl->dropbehind is set to true, then folios created are marked as |
| dropbehind as well. |
| |
| Link: https://lkml.kernel.org/r/20241220154831.1086649-6-axboe@kernel.dk |
| Signed-off-by: Jens Axboe <axboe@kernel.dk> |
| Reviewed-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com> |
| Cc: Brian Foster <bfoster@redhat.com> |
| Cc: Chris Mason <clm@meta.com> |
| Cc: Christoph Hellwig <hch@lst.de> |
| Cc: Johannes Weiner <hannes@cmpxchg.org> |
| Cc: Matthew Wilcox (Oracle) <willy@infradead.org> |
| Signed-off-by: Andrew Morton <akpm@linux-foundation.org> |
| --- |
| |
| include/linux/pagemap.h | 1 + |
| mm/readahead.c | 8 +++++++- |
| 2 files changed, 8 insertions(+), 1 deletion(-) |
| |
| --- a/include/linux/pagemap.h~mm-readahead-add-readahead_control-dropbehind-member |
| +++ a/include/linux/pagemap.h |
| @@ -1358,6 +1358,7 @@ struct readahead_control { |
| pgoff_t _index; |
| unsigned int _nr_pages; |
| unsigned int _batch_count; |
| + bool dropbehind; |
| bool _workingset; |
| unsigned long _pflags; |
| }; |
| --- a/mm/readahead.c~mm-readahead-add-readahead_control-dropbehind-member |
| +++ a/mm/readahead.c |
| @@ -181,7 +181,13 @@ static void read_pages(struct readahead_ |
| static struct folio *ractl_alloc_folio(struct readahead_control *ractl, |
| gfp_t gfp_mask, unsigned int order) |
| { |
| - return filemap_alloc_folio(gfp_mask, order); |
| + struct folio *folio; |
| + |
| + folio = filemap_alloc_folio(gfp_mask, order); |
| + if (folio && ractl->dropbehind) |
| + __folio_set_dropbehind(folio); |
| + |
| + return folio; |
| } |
| |
| /** |
| _ |