diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c index 18c031a0bf56c0da46b4371b2e18305da508f8a2..67eaddc47717f71d19c1e4ce16ca4f85ea8ed13c 100644 --- a/fs/f2fs/data.c +++ b/fs/f2fs/data.c @@ -2541,9 +2541,6 @@ int f2fs_encrypt_one_page(struct f2fs_io_info *fio) page = fio->compressed_page ? fio->compressed_page : fio->page; - /* wait for GCed page writeback via META_MAPPING */ - f2fs_wait_on_block_writeback(inode, fio->old_blkaddr); - if (fscrypt_inode_uses_inline_crypto(inode)) return 0; @@ -2702,6 +2699,11 @@ int f2fs_do_write_data_page(struct f2fs_io_info *fio) err = -EFSCORRUPTED; goto out_writepage; } + + /* wait for GCed page writeback via META_MAPPING */ + if (fio->post_read) + f2fs_wait_on_block_writeback(inode, fio->old_blkaddr); + /* * If current allocation needs SSR, * it had better in-place writes for updated data.