Skip to content

Commit 9b4b3f8

Browse files
Matthew Wilcox (Oracle)kleikamp
authored andcommitted
jfs: Convert metapage_read_folio to use folio APIs
Use bio_add_folio_nofail() as we just allocated the bio and know it cannot fail. Other than that, this is a 1:1 conversion from page APIs to folio APIs. Signed-off-by: Matthew Wilcox (Oracle) <[email protected]> Signed-off-by: Dave Kleikamp <[email protected]>
1 parent 6d69b6c commit 9b4b3f8

File tree

1 file changed

+13
-22
lines changed

1 file changed

+13
-22
lines changed

fs/jfs/jfs_metapage.c

Lines changed: 13 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -266,14 +266,14 @@ static void last_read_complete(struct page *page)
266266

267267
static void metapage_read_end_io(struct bio *bio)
268268
{
269-
struct page *page = bio->bi_private;
269+
struct folio *folio = bio->bi_private;
270270

271271
if (bio->bi_status) {
272272
printk(KERN_ERR "metapage_read_end_io: I/O error\n");
273-
SetPageError(page);
273+
folio_set_error(folio);
274274
}
275275

276-
dec_io(page, last_read_complete);
276+
dec_io(&folio->page, last_read_complete);
277277
bio_put(bio);
278278
}
279279

@@ -469,30 +469,28 @@ static int metapage_writepage(struct page *page, struct writeback_control *wbc)
469469

470470
static int metapage_read_folio(struct file *fp, struct folio *folio)
471471
{
472-
struct page *page = &folio->page;
473-
struct inode *inode = page->mapping->host;
472+
struct inode *inode = folio->mapping->host;
474473
struct bio *bio = NULL;
475474
int block_offset;
476-
int blocks_per_page = i_blocks_per_page(inode, page);
475+
int blocks_per_page = i_blocks_per_folio(inode, folio);
477476
sector_t page_start; /* address of page in fs blocks */
478477
sector_t pblock;
479478
int xlen;
480479
unsigned int len;
481480
int offset;
482481

483-
BUG_ON(!PageLocked(page));
484-
page_start = (sector_t)page->index <<
485-
(PAGE_SHIFT - inode->i_blkbits);
482+
BUG_ON(!folio_test_locked(folio));
483+
page_start = folio_pos(folio) >> inode->i_blkbits;
486484

487485
block_offset = 0;
488486
while (block_offset < blocks_per_page) {
489487
xlen = blocks_per_page - block_offset;
490488
pblock = metapage_get_blocks(inode, page_start + block_offset,
491489
&xlen);
492490
if (pblock) {
493-
if (!PagePrivate(page))
494-
insert_metapage(page, NULL);
495-
inc_io(page);
491+
if (!folio->private)
492+
insert_metapage(&folio->page, NULL);
493+
inc_io(&folio->page);
496494
if (bio)
497495
submit_bio(bio);
498496

@@ -501,27 +499,20 @@ static int metapage_read_folio(struct file *fp, struct folio *folio)
501499
bio->bi_iter.bi_sector =
502500
pblock << (inode->i_blkbits - 9);
503501
bio->bi_end_io = metapage_read_end_io;
504-
bio->bi_private = page;
502+
bio->bi_private = folio;
505503
len = xlen << inode->i_blkbits;
506504
offset = block_offset << inode->i_blkbits;
507-
if (bio_add_page(bio, page, len, offset) < len)
508-
goto add_failed;
505+
bio_add_folio_nofail(bio, folio, len, offset);
509506
block_offset += xlen;
510507
} else
511508
block_offset++;
512509
}
513510
if (bio)
514511
submit_bio(bio);
515512
else
516-
unlock_page(page);
513+
folio_unlock(folio);
517514

518515
return 0;
519-
520-
add_failed:
521-
printk(KERN_ERR "JFS: bio_add_page failed unexpectedly\n");
522-
bio_put(bio);
523-
dec_io(page, last_read_complete);
524-
return -EIO;
525516
}
526517

527518
static bool metapage_release_folio(struct folio *folio, gfp_t gfp_mask)

0 commit comments

Comments
 (0)