f2fs: refactor bio-related operations
This patch integrates redundant bio operations on read and write IOs. 1. Move bio-related codes to the top of data.c. 2. Replace f2fs_submit_bio with f2fs_submit_merged_bio, which handles read bios additionally. 3. Introduce __submit_merged_bio to submit the merged bio. 4. Change f2fs_readpage to f2fs_submit_page_bio. 5. Introduce f2fs_submit_page_mbio to integrate previous submit_read_page and submit_write_page. Reviewed-by: Gu Zheng <guz.fnst@cn.fujitsu.com> Reviewed-by: Chao Yu <chao2.yu@samsung.com > Signed-off-by: Jaegeuk Kim <jaegeuk.kim@samsung.com>
This commit is contained in:
@@ -61,7 +61,8 @@ repeat:
|
||||
if (PageUptodate(page))
|
||||
goto out;
|
||||
|
||||
if (f2fs_readpage(sbi, page, index, READ_SYNC | REQ_META | REQ_PRIO))
|
||||
if (f2fs_submit_page_bio(sbi, page, index,
|
||||
READ_SYNC | REQ_META | REQ_PRIO))
|
||||
goto repeat;
|
||||
|
||||
lock_page(page);
|
||||
@@ -157,7 +158,8 @@ long sync_meta_pages(struct f2fs_sb_info *sbi, enum page_type type,
|
||||
}
|
||||
|
||||
if (nwritten)
|
||||
f2fs_submit_bio(sbi, type, nr_to_write == LONG_MAX);
|
||||
f2fs_submit_merged_bio(sbi, type, nr_to_write == LONG_MAX,
|
||||
WRITE);
|
||||
|
||||
return nwritten;
|
||||
}
|
||||
@@ -590,7 +592,7 @@ retry:
|
||||
* We should submit bio, since it exists several
|
||||
* wribacking dentry pages in the freeing inode.
|
||||
*/
|
||||
f2fs_submit_bio(sbi, DATA, true);
|
||||
f2fs_submit_merged_bio(sbi, DATA, true, WRITE);
|
||||
}
|
||||
goto retry;
|
||||
}
|
||||
@@ -796,9 +798,9 @@ void write_checkpoint(struct f2fs_sb_info *sbi, bool is_umount)
|
||||
|
||||
trace_f2fs_write_checkpoint(sbi->sb, is_umount, "finish block_ops");
|
||||
|
||||
f2fs_submit_bio(sbi, DATA, true);
|
||||
f2fs_submit_bio(sbi, NODE, true);
|
||||
f2fs_submit_bio(sbi, META, true);
|
||||
f2fs_submit_merged_bio(sbi, DATA, true, WRITE);
|
||||
f2fs_submit_merged_bio(sbi, NODE, true, WRITE);
|
||||
f2fs_submit_merged_bio(sbi, META, true, WRITE);
|
||||
|
||||
/*
|
||||
* update checkpoint pack index
|
||||
|
Reference in New Issue
Block a user