|
@@ -140,7 +140,8 @@ bool is_valid_blkaddr(struct f2fs_sb_info *sbi, block_t blkaddr, int type)
|
|
|
/*
|
|
|
* Readahead CP/NAT/SIT/SSA pages
|
|
|
*/
|
|
|
-int ra_meta_pages(struct f2fs_sb_info *sbi, block_t start, int nrpages, int type)
|
|
|
+int ra_meta_pages(struct f2fs_sb_info *sbi, block_t start, int nrpages,
|
|
|
+ int type, bool sync)
|
|
|
{
|
|
|
block_t prev_blk_addr = 0;
|
|
|
struct page *page;
|
|
@@ -148,7 +149,7 @@ int ra_meta_pages(struct f2fs_sb_info *sbi, block_t start, int nrpages, int type
|
|
|
struct f2fs_io_info fio = {
|
|
|
.sbi = sbi,
|
|
|
.type = META,
|
|
|
- .rw = READ_SYNC | REQ_META | REQ_PRIO,
|
|
|
+ .rw = sync ? (READ_SYNC | REQ_META | REQ_PRIO) : READA,
|
|
|
.encrypted_page = NULL,
|
|
|
};
|
|
|
|
|
@@ -214,7 +215,7 @@ void ra_meta_pages_cond(struct f2fs_sb_info *sbi, pgoff_t index)
|
|
|
f2fs_put_page(page, 0);
|
|
|
|
|
|
if (readahead)
|
|
|
- ra_meta_pages(sbi, index, MAX_BIO_BLOCKS(sbi), META_POR);
|
|
|
+ ra_meta_pages(sbi, index, MAX_BIO_BLOCKS(sbi), META_POR, true);
|
|
|
}
|
|
|
|
|
|
static int f2fs_write_meta_page(struct page *page,
|
|
@@ -521,7 +522,7 @@ int recover_orphan_inodes(struct f2fs_sb_info *sbi)
|
|
|
start_blk = __start_cp_addr(sbi) + 1 + __cp_payload(sbi);
|
|
|
orphan_blocks = __start_sum_addr(sbi) - 1 - __cp_payload(sbi);
|
|
|
|
|
|
- ra_meta_pages(sbi, start_blk, orphan_blocks, META_CP);
|
|
|
+ ra_meta_pages(sbi, start_blk, orphan_blocks, META_CP, true);
|
|
|
|
|
|
for (i = 0; i < orphan_blocks; i++) {
|
|
|
struct page *page = get_meta_page(sbi, start_blk + i);
|