You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
f2fs: split grab_cache_page and wait_on_page_writeback for node pages
This patch splits grab_cache_page_write_begin into grab_cache_page and wait_on_page_writeback for node pages. This patch intends to enhance the latency to get node pages by alleviating unnecessary wait_on_page_writeback. Signed-off-by: Chao Yu <chao2.yu@samsung.com> Signed-off-by: Jaegeuk Kim <jaegeuk.kim@samsung.com>
This commit is contained in:
+4
-4
@@ -853,8 +853,7 @@ struct page *new_node_page(struct dnode_of_data *dn,
|
||||
if (unlikely(is_inode_flag_set(F2FS_I(dn->inode), FI_NO_ALLOC)))
|
||||
return ERR_PTR(-EPERM);
|
||||
|
||||
page = grab_cache_page_write_begin(NODE_MAPPING(sbi),
|
||||
dn->nid, AOP_FLAG_NOFS);
|
||||
page = grab_cache_page(NODE_MAPPING(sbi), dn->nid);
|
||||
if (!page)
|
||||
return ERR_PTR(-ENOMEM);
|
||||
|
||||
@@ -871,6 +870,7 @@ struct page *new_node_page(struct dnode_of_data *dn,
|
||||
new_ni.ino = dn->inode->i_ino;
|
||||
set_node_addr(sbi, &new_ni, NEW_ADDR, false);
|
||||
|
||||
f2fs_wait_on_page_writeback(page, NODE);
|
||||
fill_node_footer(page, dn->nid, dn->inode->i_ino, ofs, true);
|
||||
set_cold_node(dn->inode, page);
|
||||
SetPageUptodate(page);
|
||||
@@ -950,8 +950,7 @@ struct page *get_node_page(struct f2fs_sb_info *sbi, pgoff_t nid)
|
||||
struct page *page;
|
||||
int err;
|
||||
repeat:
|
||||
page = grab_cache_page_write_begin(NODE_MAPPING(sbi),
|
||||
nid, AOP_FLAG_NOFS);
|
||||
page = grab_cache_page(NODE_MAPPING(sbi), nid);
|
||||
if (!page)
|
||||
return ERR_PTR(-ENOMEM);
|
||||
|
||||
@@ -1562,6 +1561,7 @@ static void recover_inline_xattr(struct inode *inode, struct page *page)
|
||||
src_addr = inline_xattr_addr(page);
|
||||
inline_size = inline_xattr_size(inode);
|
||||
|
||||
f2fs_wait_on_page_writeback(ipage, NODE);
|
||||
memcpy(dst_addr, src_addr, inline_size);
|
||||
|
||||
update_inode(inode, ipage);
|
||||
|
||||
Reference in New Issue
Block a user