filemap: Convert filemap_range_uptodate to folios
authorMatthew Wilcox (Oracle) <willy@infradead.org>
Wed, 10 Mar 2021 16:04:19 +0000 (11:04 -0500)
committerMatthew Wilcox (Oracle) <willy@infradead.org>
Tue, 4 Jan 2022 18:15:34 +0000 (13:15 -0500)
The only caller was already passing a head page, so this simply avoids
a call to compound_head().

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

index b044afef78efcba3dde7bad7659e19b146e3a8f3..c4f887c277d0fba6b81a8a8ed4b1a7a81aae30fe 100644 (file)
@@ -2395,29 +2395,29 @@ static int filemap_read_folio(struct file *file, struct address_space *mapping,
 }
 
 static bool filemap_range_uptodate(struct address_space *mapping,
-               loff_t pos, struct iov_iter *iter, struct page *page)
+               loff_t pos, struct iov_iter *iter, struct folio *folio)
 {
        int count;
 
-       if (PageUptodate(page))
+       if (folio_test_uptodate(folio))
                return true;
        /* pipes can't handle partially uptodate pages */
        if (iov_iter_is_pipe(iter))
                return false;
        if (!mapping->a_ops->is_partially_uptodate)
                return false;
-       if (mapping->host->i_blkbits >= (PAGE_SHIFT + thp_order(page)))
+       if (mapping->host->i_blkbits >= folio_shift(folio))
                return false;
 
        count = iter->count;
-       if (page_offset(page) > pos) {
-               count -= page_offset(page) - pos;
+       if (folio_pos(folio) > pos) {
+               count -= folio_pos(folio) - pos;
                pos = 0;
        } else {
-               pos -= page_offset(page);
+               pos -= folio_pos(folio);
        }
 
-       return mapping->a_ops->is_partially_uptodate(page, pos, count);
+       return mapping->a_ops->is_partially_uptodate(&folio->page, pos, count);
 }
 
 static int filemap_update_page(struct kiocb *iocb,
@@ -2457,7 +2457,7 @@ static int filemap_update_page(struct kiocb *iocb,
                goto unlock;
 
        error = 0;
-       if (filemap_range_uptodate(mapping, iocb->ki_pos, iter, &folio->page))
+       if (filemap_range_uptodate(mapping, iocb->ki_pos, iter, folio))
                goto unlock;
 
        error = -EAGAIN;