@@ -266,14 +266,14 @@ static void last_read_complete(struct page *page)
266266
267267static 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
470470static 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
527518static bool metapage_release_folio (struct folio * folio , gfp_t gfp_mask )
0 commit comments