gfs2: Convert gfs2_find_jhead() to use a folio

Remove a call to grab_cache_page() by using a folio throughout
this function.

[agruenba@redhat.com: Adjust to return value difference between
bio_add_page() and bio_add_folio().]

Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
This commit is contained in:
Matthew Wilcox (Oracle)
2025-02-10 13:34:44 +00:00
committed by Andreas Gruenbacher
parent e00307e8d4
commit 4082976009

View File

@@ -512,9 +512,9 @@ int gfs2_find_jhead(struct gfs2_jdesc *jd, struct gfs2_log_header_host *head,
unsigned int shift = PAGE_SHIFT - bsize_shift; unsigned int shift = PAGE_SHIFT - bsize_shift;
unsigned int max_blocks = 2 * 1024 * 1024 >> bsize_shift; unsigned int max_blocks = 2 * 1024 * 1024 >> bsize_shift;
struct gfs2_journal_extent *je; struct gfs2_journal_extent *je;
int sz, ret = 0; int ret = 0;
struct bio *bio = NULL; struct bio *bio = NULL;
struct page *page = NULL; struct folio *folio = NULL;
bool done = false; bool done = false;
errseq_t since; errseq_t since;
@@ -527,9 +527,10 @@ int gfs2_find_jhead(struct gfs2_jdesc *jd, struct gfs2_log_header_host *head,
u64 dblock = je->dblock; u64 dblock = je->dblock;
for (; block < je->lblock + je->blocks; block++, dblock++) { for (; block < je->lblock + je->blocks; block++, dblock++) {
if (!page) { if (!folio) {
page = grab_cache_page(mapping, block >> shift); folio = filemap_grab_folio(mapping,
if (!page) { block >> shift);
if (!folio) {
ret = -ENOMEM; ret = -ENOMEM;
done = true; done = true;
goto out; goto out;
@@ -541,8 +542,7 @@ int gfs2_find_jhead(struct gfs2_jdesc *jd, struct gfs2_log_header_host *head,
sector_t sector = dblock << sdp->sd_fsb2bb_shift; sector_t sector = dblock << sdp->sd_fsb2bb_shift;
if (bio_end_sector(bio) == sector) { if (bio_end_sector(bio) == sector) {
sz = bio_add_page(bio, page, bsize, off); if (bio_add_folio(bio, folio, bsize, off))
if (sz == bsize)
goto block_added; goto block_added;
} }
if (off) { if (off) {
@@ -562,12 +562,12 @@ int gfs2_find_jhead(struct gfs2_jdesc *jd, struct gfs2_log_header_host *head,
bio = gfs2_log_alloc_bio(sdp, dblock, gfs2_end_log_read); bio = gfs2_log_alloc_bio(sdp, dblock, gfs2_end_log_read);
bio->bi_opf = REQ_OP_READ; bio->bi_opf = REQ_OP_READ;
add_block_to_new_bio: add_block_to_new_bio:
sz = bio_add_page(bio, page, bsize, off); if (!bio_add_folio(bio, folio, bsize, off))
BUG_ON(sz != bsize); BUG();
block_added: block_added:
off += bsize; off += bsize;
if (off == PAGE_SIZE) if (off == folio_size(folio))
page = NULL; folio = NULL;
if (blocks_submitted <= blocks_read + max_blocks) { if (blocks_submitted <= blocks_read + max_blocks) {
/* Keep at least one bio in flight */ /* Keep at least one bio in flight */
continue; continue;