Skip to contentSkip to conversation

f2fs: submit node page write bios when really required

PATCH New Jaegeuk Kim 1 participant 2 messages Mar 12, 2016

Subsystems (2)
lore
Share & tools
lore

Jaegeuk Kim

author maintainer
#0 lore raw

PATCH 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.

---
 fs/f2fs/node.c | 12 +-----------
 1 file changed, 1 insertion(+), 11 deletions(-)
fs/f2fs/node.c +1 -11
index 771166d..118321b 100644
@@ -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
author maintainer
#1 lore raw

PATCH 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.

---
 fs/f2fs/data.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
fs/f2fs/data.c +2 -1
index e5c762b..fb75699 100644
@@ -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