@@ -3378,11 +3378,11 @@ void f2fs_write_failed(struct inode *inode, loff_t to)
3378
3378
}
3379
3379
3380
3380
static int prepare_write_begin (struct f2fs_sb_info * sbi ,
3381
- struct page * page , loff_t pos , unsigned len ,
3381
+ struct folio * folio , loff_t pos , unsigned int len ,
3382
3382
block_t * blk_addr , bool * node_changed )
3383
3383
{
3384
- struct inode * inode = page -> mapping -> host ;
3385
- pgoff_t index = page -> index ;
3384
+ struct inode * inode = folio -> mapping -> host ;
3385
+ pgoff_t index = folio -> index ;
3386
3386
struct dnode_of_data dn ;
3387
3387
struct page * ipage ;
3388
3388
bool locked = false;
@@ -3419,13 +3419,13 @@ static int prepare_write_begin(struct f2fs_sb_info *sbi,
3419
3419
3420
3420
if (f2fs_has_inline_data (inode )) {
3421
3421
if (pos + len <= MAX_INLINE_DATA (inode )) {
3422
- f2fs_do_read_inline_data (page_folio ( page ) , ipage );
3422
+ f2fs_do_read_inline_data (folio , ipage );
3423
3423
set_inode_flag (inode , FI_DATA_EXIST );
3424
3424
if (inode -> i_nlink )
3425
3425
set_page_private_inline (ipage );
3426
3426
goto out ;
3427
3427
}
3428
- err = f2fs_convert_inline_page (& dn , page );
3428
+ err = f2fs_convert_inline_page (& dn , folio_page ( folio , 0 ) );
3429
3429
if (err || dn .data_blkaddr != NULL_ADDR )
3430
3430
goto out ;
3431
3431
}
@@ -3518,12 +3518,12 @@ static int __reserve_data_block(struct inode *inode, pgoff_t index,
3518
3518
}
3519
3519
3520
3520
static int prepare_atomic_write_begin (struct f2fs_sb_info * sbi ,
3521
- struct page * page , loff_t pos , unsigned int len ,
3521
+ struct folio * folio , loff_t pos , unsigned int len ,
3522
3522
block_t * blk_addr , bool * node_changed , bool * use_cow )
3523
3523
{
3524
- struct inode * inode = page -> mapping -> host ;
3524
+ struct inode * inode = folio -> mapping -> host ;
3525
3525
struct inode * cow_inode = F2FS_I (inode )-> cow_inode ;
3526
- pgoff_t index = page -> index ;
3526
+ pgoff_t index = folio -> index ;
3527
3527
int err = 0 ;
3528
3528
block_t ori_blk_addr = NULL_ADDR ;
3529
3529
@@ -3566,6 +3566,7 @@ static int f2fs_write_begin(struct file *file, struct address_space *mapping,
3566
3566
struct inode * inode = mapping -> host ;
3567
3567
struct f2fs_sb_info * sbi = F2FS_I_SB (inode );
3568
3568
struct page * page = NULL ;
3569
+ struct folio * folio ;
3569
3570
pgoff_t index = ((unsigned long long ) pos ) >> PAGE_SHIFT ;
3570
3571
bool need_balance = false;
3571
3572
bool use_cow = false;
@@ -3625,22 +3626,23 @@ static int f2fs_write_begin(struct file *file, struct address_space *mapping,
3625
3626
/* TODO: cluster can be compressed due to race with .writepage */
3626
3627
3627
3628
* pagep = page ;
3629
+ folio = page_folio (page );
3628
3630
3629
3631
if (f2fs_is_atomic_file (inode ))
3630
- err = prepare_atomic_write_begin (sbi , page , pos , len ,
3632
+ err = prepare_atomic_write_begin (sbi , folio , pos , len ,
3631
3633
& blkaddr , & need_balance , & use_cow );
3632
3634
else
3633
- err = prepare_write_begin (sbi , page , pos , len ,
3635
+ err = prepare_write_begin (sbi , folio , pos , len ,
3634
3636
& blkaddr , & need_balance );
3635
3637
if (err )
3636
3638
goto fail ;
3637
3639
3638
3640
if (need_balance && !IS_NOQUOTA (inode ) &&
3639
3641
has_not_enough_free_secs (sbi , 0 , 0 )) {
3640
- unlock_page ( page );
3642
+ folio_unlock ( folio );
3641
3643
f2fs_balance_fs (sbi , true);
3642
- lock_page ( page );
3643
- if (page -> mapping != mapping ) {
3644
+ folio_lock ( folio );
3645
+ if (folio -> mapping != mapping ) {
3644
3646
/* The page got truncated from under us */
3645
3647
f2fs_put_page (page , 1 );
3646
3648
goto repeat ;
@@ -3649,18 +3651,18 @@ static int f2fs_write_begin(struct file *file, struct address_space *mapping,
3649
3651
3650
3652
f2fs_wait_on_page_writeback (page , DATA , false, true);
3651
3653
3652
- if (len == PAGE_SIZE || PageUptodate ( page ))
3654
+ if (len == PAGE_SIZE || folio_test_uptodate ( folio ))
3653
3655
return 0 ;
3654
3656
3655
3657
if (!(pos & (PAGE_SIZE - 1 )) && (pos + len ) >= i_size_read (inode ) &&
3656
3658
!f2fs_verity_in_progress (inode )) {
3657
- zero_user_segment ( page , len , PAGE_SIZE );
3659
+ folio_zero_segment ( folio , len , folio_size ( folio ) );
3658
3660
return 0 ;
3659
3661
}
3660
3662
3661
3663
if (blkaddr == NEW_ADDR ) {
3662
- zero_user_segment ( page , 0 , PAGE_SIZE );
3663
- SetPageUptodate ( page );
3664
+ folio_zero_segment ( folio , 0 , folio_size ( folio ) );
3665
+ folio_mark_uptodate ( folio );
3664
3666
} else {
3665
3667
if (!f2fs_is_valid_blkaddr (sbi , blkaddr ,
3666
3668
DATA_GENERIC_ENHANCE_READ )) {
@@ -3669,16 +3671,16 @@ static int f2fs_write_begin(struct file *file, struct address_space *mapping,
3669
3671
}
3670
3672
err = f2fs_submit_page_read (use_cow ?
3671
3673
F2FS_I (inode )-> cow_inode : inode ,
3672
- page_folio ( page ) , blkaddr , 0 , true);
3674
+ folio , blkaddr , 0 , true);
3673
3675
if (err )
3674
3676
goto fail ;
3675
3677
3676
- lock_page ( page );
3677
- if (unlikely (page -> mapping != mapping )) {
3678
+ folio_lock ( folio );
3679
+ if (unlikely (folio -> mapping != mapping )) {
3678
3680
f2fs_put_page (page , 1 );
3679
3681
goto repeat ;
3680
3682
}
3681
- if (unlikely (!PageUptodate ( page ))) {
3683
+ if (unlikely (!folio_test_uptodate ( folio ))) {
3682
3684
err = - EIO ;
3683
3685
goto fail ;
3684
3686
}
0 commit comments