readahead: Convert page_cache_async_ra() to take a folio
authorMatthew Wilcox (Oracle) <willy@infradead.org>
Thu, 27 May 2021 16:30:54 +0000 (12:30 -0400)
committerMatthew Wilcox (Oracle) <willy@infradead.org>
Tue, 4 Jan 2022 18:15:34 +0000 (13:15 -0500)
Using the folio here avoids checking whether it's a tail page.
This patch mostly just enables some of the following patches.

Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: William Kucharski <william.kucharski@oracle.com>
include/linux/pagemap.h
mm/readahead.c

index 8c2cad7f0c36a10a15fbc476c294a6716c5daea0..30302be6977fc85e7f26a39cacefef582beb6a3e 100644 (file)
@@ -993,7 +993,7 @@ struct readahead_control {
 void page_cache_ra_unbounded(struct readahead_control *,
                unsigned long nr_to_read, unsigned long lookahead_count);
 void page_cache_sync_ra(struct readahead_control *, unsigned long req_count);
-void page_cache_async_ra(struct readahead_control *, struct page *,
+void page_cache_async_ra(struct readahead_control *, struct folio *,
                unsigned long req_count);
 void readahead_expand(struct readahead_control *ractl,
                      loff_t new_start, size_t new_len);
@@ -1040,7 +1040,7 @@ void page_cache_async_readahead(struct address_space *mapping,
                struct page *page, pgoff_t index, unsigned long req_count)
 {
        DEFINE_READAHEAD(ractl, file, ra, mapping, index);
-       page_cache_async_ra(&ractl, page, req_count);
+       page_cache_async_ra(&ractl, page_folio(page), req_count);
 }
 
 static inline struct folio *__readahead_folio(struct readahead_control *ractl)
index 6ae5693de28cef5177f80b8db747b4bf8568102d..e48e7864177276707371c61fb8dc4e8b7d850b59 100644 (file)
@@ -581,7 +581,7 @@ void page_cache_sync_ra(struct readahead_control *ractl,
 EXPORT_SYMBOL_GPL(page_cache_sync_ra);
 
 void page_cache_async_ra(struct readahead_control *ractl,
-               struct page *page, unsigned long req_count)
+               struct folio *folio, unsigned long req_count)
 {
        /* no read-ahead */
        if (!ractl->ra->ra_pages)
@@ -590,10 +590,10 @@ void page_cache_async_ra(struct readahead_control *ractl,
        /*
         * Same bit is used for PG_readahead and PG_reclaim.
         */
-       if (PageWriteback(page))
+       if (folio_test_writeback(folio))
                return;
 
-       ClearPageReadahead(page);
+       folio_clear_readahead(folio);
 
        /*
         * Defer asynchronous read-ahead on IO congestion.