gfs2: convert gfs2_getjdatabuf to use a folio
authorMatthew Wilcox (Oracle) <willy@infradead.org>
Mon, 16 Oct 2023 20:10:55 +0000 (21:10 +0100)
committerAndrew Morton <akpm@linux-foundation.org>
Wed, 25 Oct 2023 23:47:08 +0000 (16:47 -0700)
Use the folio APIs, saving four hidden calls to compound_head().

Link: https://lkml.kernel.org/r/20231016201114.1928083-9-willy@infradead.org
Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Reviewed-by: Andreas Gruenbacher <agruenba@redhat.com>
Cc: Pankaj Raghav <p.raghav@samsung.com>
Cc: Ryusuke Konishi <konishi.ryusuke@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
fs/gfs2/meta_io.c

index f1fac1b45059626c4ddac65ea2e880759bc5c871..f6d40d51f5ed0008acb2f8595f700d0c7a25008c 100644 (file)
@@ -400,26 +400,20 @@ static struct buffer_head *gfs2_getjdatabuf(struct gfs2_inode *ip, u64 blkno)
 {
        struct address_space *mapping = ip->i_inode.i_mapping;
        struct gfs2_sbd *sdp = GFS2_SB(&ip->i_inode);
-       struct page *page;
+       struct folio *folio;
        struct buffer_head *bh;
        unsigned int shift = PAGE_SHIFT - sdp->sd_sb.sb_bsize_shift;
        unsigned long index = blkno >> shift; /* convert block to page */
        unsigned int bufnum = blkno - (index << shift);
 
-       page = find_get_page_flags(mapping, index, FGP_LOCK|FGP_ACCESSED);
-       if (!page)
-               return NULL;
-       if (!page_has_buffers(page)) {
-               unlock_page(page);
-               put_page(page);
+       folio = __filemap_get_folio(mapping, index, FGP_LOCK | FGP_ACCESSED, 0);
+       if (IS_ERR(folio))
                return NULL;
-       }
-       /* Locate header for our buffer within our page */
-       for (bh = page_buffers(page); bufnum--; bh = bh->b_this_page)
-               /* Do nothing */;
-       get_bh(bh);
-       unlock_page(page);
-       put_page(page);
+       bh = folio_buffers(folio);
+       if (bh)
+               bh = get_nth_bh(bh, bufnum);
+       folio_unlock(folio);
+       folio_put(folio);
        return bh;
 }