Use the folio API and pass the folio from both callers.
Saves a hidden call to compound_head().

Signed-off-by: Matthew Wilcox (Oracle) <wi...@infradead.org>
---
 fs/buffer.c | 18 ++++++++----------
 1 file changed, 8 insertions(+), 10 deletions(-)

diff --git a/fs/buffer.c b/fs/buffer.c
index c4fc4b3b8aab..9b789f109a57 100644
--- a/fs/buffer.c
+++ b/fs/buffer.c
@@ -934,15 +934,14 @@ static sector_t blkdev_max_block(struct block_device 
*bdev, unsigned int size)
 }
 
 /*
- * Initialise the state of a blockdev page's buffers.
+ * Initialise the state of a blockdev folio's buffers.
  */ 
-static sector_t
-init_page_buffers(struct page *page, struct block_device *bdev,
-                       sector_t block, int size)
+static sector_t folio_init_buffers(struct folio *folio,
+               struct block_device *bdev, sector_t block, int size)
 {
-       struct buffer_head *head = page_buffers(page);
+       struct buffer_head *head = folio_buffers(folio);
        struct buffer_head *bh = head;
-       int uptodate = PageUptodate(page);
+       bool uptodate = folio_test_uptodate(folio);
        sector_t end_block = blkdev_max_block(bdev, size);
 
        do {
@@ -998,9 +997,8 @@ grow_dev_page(struct block_device *bdev, sector_t block,
        bh = folio_buffers(folio);
        if (bh) {
                if (bh->b_size == size) {
-                       end_block = init_page_buffers(&folio->page, bdev,
-                                               (sector_t)index << sizebits,
-                                               size);
+                       end_block = folio_init_buffers(folio, bdev,
+                                       (sector_t)index << sizebits, size);
                        goto done;
                }
                if (!try_to_free_buffers(folio))
@@ -1016,7 +1014,7 @@ grow_dev_page(struct block_device *bdev, sector_t block,
         */
        spin_lock(&inode->i_mapping->private_lock);
        link_dev_buffers(&folio->page, bh);
-       end_block = init_page_buffers(&folio->page, bdev,
+       end_block = folio_init_buffers(folio, bdev,
                        (sector_t)index << sizebits, size);
        spin_unlock(&inode->i_mapping->private_lock);
 done:
-- 
2.39.2

Reply via email to