@@ -266,14 +266,14 @@ static void last_read_complete(struct page *page)
266
266
267
267
static void metapage_read_end_io (struct bio * bio )
268
268
{
269
- struct page * page = bio -> bi_private ;
269
+ struct folio * folio = bio -> bi_private ;
270
270
271
271
if (bio -> bi_status ) {
272
272
printk (KERN_ERR "metapage_read_end_io: I/O error\n" );
273
- SetPageError ( page );
273
+ folio_set_error ( folio );
274
274
}
275
275
276
- dec_io (page , last_read_complete );
276
+ dec_io (& folio -> page , last_read_complete );
277
277
bio_put (bio );
278
278
}
279
279
@@ -469,30 +469,28 @@ static int metapage_writepage(struct page *page, struct writeback_control *wbc)
469
469
470
470
static int metapage_read_folio (struct file * fp , struct folio * folio )
471
471
{
472
- struct page * page = & folio -> page ;
473
- struct inode * inode = page -> mapping -> host ;
472
+ struct inode * inode = folio -> mapping -> host ;
474
473
struct bio * bio = NULL ;
475
474
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 );
477
476
sector_t page_start ; /* address of page in fs blocks */
478
477
sector_t pblock ;
479
478
int xlen ;
480
479
unsigned int len ;
481
480
int offset ;
482
481
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 ;
486
484
487
485
block_offset = 0 ;
488
486
while (block_offset < blocks_per_page ) {
489
487
xlen = blocks_per_page - block_offset ;
490
488
pblock = metapage_get_blocks (inode , page_start + block_offset ,
491
489
& xlen );
492
490
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 );
496
494
if (bio )
497
495
submit_bio (bio );
498
496
@@ -501,27 +499,20 @@ static int metapage_read_folio(struct file *fp, struct folio *folio)
501
499
bio -> bi_iter .bi_sector =
502
500
pblock << (inode -> i_blkbits - 9 );
503
501
bio -> bi_end_io = metapage_read_end_io ;
504
- bio -> bi_private = page ;
502
+ bio -> bi_private = folio ;
505
503
len = xlen << inode -> i_blkbits ;
506
504
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 );
509
506
block_offset += xlen ;
510
507
} else
511
508
block_offset ++ ;
512
509
}
513
510
if (bio )
514
511
submit_bio (bio );
515
512
else
516
- unlock_page ( page );
513
+ folio_unlock ( folio );
517
514
518
515
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 ;
525
516
}
526
517
527
518
static bool metapage_release_folio (struct folio * folio , gfp_t gfp_mask )
0 commit comments