summaryrefslogtreecommitdiffstats
path: root/fs/f2fs/node.c
diff options
context:
space:
mode:
authorJaegeuk Kim <jaegeuk.kim@samsung.com>2013-11-30 12:51:14 +0900
committerJaegeuk Kim <jaegeuk.kim@samsung.com>2013-12-23 10:18:05 +0900
commit93dfe2ac516250755f7d5edd438b0ce67c0e3aa6 (patch)
tree66a4821769e2feb60de4265b8b9d7b03706d544d /fs/f2fs/node.c
parent187b5b8b3dfcfc73126f2743c89cc47df3bf07be (diff)
downloadop-kernel-dev-93dfe2ac516250755f7d5edd438b0ce67c0e3aa6.zip
op-kernel-dev-93dfe2ac516250755f7d5edd438b0ce67c0e3aa6.tar.gz
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>
Diffstat (limited to 'fs/f2fs/node.c')
-rw-r--r--fs/f2fs/node.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/fs/f2fs/node.c b/fs/f2fs/node.c
index d0ab003..0e1a3df 100644
--- a/fs/f2fs/node.c
+++ b/fs/f2fs/node.c
@@ -106,11 +106,11 @@ static void ra_nat_pages(struct f2fs_sb_info *sbi, int nid)
f2fs_put_page(page, 1);
continue;
}
- submit_read_page(sbi, page, index, READ_SYNC | REQ_META);
+ f2fs_submit_page_mbio(sbi, page, index, META, READ);
mark_page_accessed(page);
f2fs_put_page(page, 0);
}
- f2fs_submit_read_bio(sbi, READ_SYNC | REQ_META);
+ f2fs_submit_merged_bio(sbi, META, true, READ);
}
static struct nat_entry *__lookup_nat_cache(struct f2fs_nm_info *nm_i, nid_t n)
@@ -891,7 +891,7 @@ fail:
* LOCKED_PAGE: f2fs_put_page(page, 1)
* error: nothing
*/
-static int read_node_page(struct page *page, int type)
+static int read_node_page(struct page *page, int rw)
{
struct f2fs_sb_info *sbi = F2FS_SB(page->mapping->host->i_sb);
struct node_info ni;
@@ -906,7 +906,7 @@ static int read_node_page(struct page *page, int type)
if (PageUptodate(page))
return LOCKED_PAGE;
- return f2fs_readpage(sbi, page, ni.blk_addr, type);
+ return f2fs_submit_page_bio(sbi, page, ni.blk_addr, rw);
}
/*
@@ -1136,8 +1136,8 @@ continue_unlock:
}
if (wrote)
- f2fs_submit_bio(sbi, NODE, wbc->sync_mode == WB_SYNC_ALL);
-
+ f2fs_submit_merged_bio(sbi, NODE, wbc->sync_mode == WB_SYNC_ALL,
+ WRITE);
return nwritten;
}
@@ -1592,7 +1592,7 @@ int restore_node_summary(struct f2fs_sb_info *sbi,
*/
ClearPageUptodate(page);
- if (f2fs_readpage(sbi, page, addr, READ_SYNC))
+ if (f2fs_submit_page_bio(sbi, page, addr, READ_SYNC))
goto out;
lock_page(page);
OpenPOWER on IntegriCloud