f2fs: submit node page write bios when really required
Subsystems (2)
Jaegeuk Kim
maintainerPATCH 1/2 f2fs: submit node page write bios when really required
If many threads calls fsync with data writes, we don't need to flush every bios having node page writes.
The f2fs_wait_on_page_writeback will flush its bios when the page is really needed.
Signed-off-by Jaegeuk Kim <[email protected]>
--- fs/f2fs/node.c | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-)
fs/f2fs/node.c +1 -11
@@ -1236,7 +1236,7 @@ int sync_node_pages(struct f2fs_sb_info *sbi, nid_t ino,pgoff_t index, end;struct pagevec pvec;int step = ino ?2 :0 ; -int nwritten =0 , wrote =0 ; +int nwritten =0 ;pagevec_init (&pvec,0 );
@@ -1326,8 +1326,6 @@ continue_unlock:if (NODE_MAPPING (sbi)->a_ops->writepage (page, wbc))unlock_page (page); -else - wrote++;if (--wbc->nr_to_write ==0 )break ;
@@ -1345,14 +1343,6 @@ continue_unlock: step++; goto next_step; } - -if (wrote) { -if (ino) -f2fs_submit_merged_bio_cond (sbi,NULL ,NULL , - ino,NODE ,WRITE ); -else -f2fs_submit_merged_bio (sbi,NODE ,WRITE ); - }return nwritten; }
Signature · 1 line
2.6.3
Jaegeuk Kim
maintainerPATCH 2/2 f2fs: avoid writepage lock when many threads call fsync
If many threads try to write small number of data and fsync, we should avoid writepages lock contention.
Signed-off-by Jaegeuk Kim <[email protected]>
--- fs/f2fs/data.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
fs/f2fs/data.c +2 -1
@@ -1400,7 +1400,8 @@ static int f2fs_write_data_pages(struct address_space *mapping, diff =nr_pages_to_write (sbi,DATA , wbc); -if (!S_ISDIR (inode->i_mode) && wbc->sync_mode ==WB_SYNC_ALL ) { +if (!S_ISDIR (inode->i_mode) && wbc->sync_mode ==WB_SYNC_ALL && + !is_inode_flag_set (F2FS_I (inode),FI_NEED_IPU )) {mutex_lock (&sbi->writepages); locked = true; }
Signature · 1 line
2.6.3