mm/readahead: add readahead_control->dropbehind member
authorJens Axboe <axboe@kernel.dk>
Thu, 7 Nov 2024 19:11:53 +0000 (12:11 -0700)
committerJens Axboe <axboe@kernel.dk>
Fri, 20 Dec 2024 15:30:39 +0000 (08:30 -0700)
If ractl->dropbehind is set to true, then folios created are marked as
dropbehind as well.

Reviewed-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
include/linux/pagemap.h
mm/readahead.c

index bcf0865a38ae346f45a0409067ac3f7feeebf6d9..5da4b6d42fae6d0467c5457c2d6d2ee16a0722ec 100644 (file)
@@ -1353,6 +1353,7 @@ struct readahead_control {
        pgoff_t _index;
        unsigned int _nr_pages;
        unsigned int _batch_count;
+       bool dropbehind;
        bool _workingset;
        unsigned long _pflags;
 };
index 8a62ad4106ffd787caf7da53e3005f0e85fafd2a..c0a6dc5d568639cfd5c9d7d50d27771206c90d3b 100644 (file)
@@ -191,7 +191,13 @@ static void read_pages(struct readahead_control *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);
+       struct folio *folio;
+
+       folio = filemap_alloc_folio(gfp_mask, order);
+       if (folio && ractl->dropbehind)
+               __folio_set_dropbehind(folio);
+
+       return folio;
 }
 
 /**