mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	f2fs: submit bio of in-place-update pages
This patch tries to split in-place-update bios from sequential bios. Suggested-by: Yunlei He <heyunlei@huawei.com> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
This commit is contained in:
		
							parent
							
								
									fc2e2875d5
								
							
						
					
					
						commit
						d1b3e72d54
					
				
					 3 changed files with 7 additions and 4 deletions
				
			
		| 
						 | 
					@ -362,6 +362,9 @@ int f2fs_submit_page_bio(struct f2fs_io_info *fio)
 | 
				
			||||||
	bio_set_op_attrs(bio, fio->op, fio->op_flags);
 | 
						bio_set_op_attrs(bio, fio->op, fio->op_flags);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	__submit_bio(fio->sbi, bio, fio->type);
 | 
						__submit_bio(fio->sbi, bio, fio->type);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (!is_read_io(fio->op))
 | 
				
			||||||
 | 
							inc_page_count(fio->sbi, WB_DATA_TYPE(fio->page));
 | 
				
			||||||
	return 0;
 | 
						return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1354,7 +1357,7 @@ int do_write_data_page(struct f2fs_io_info *fio)
 | 
				
			||||||
			!is_cold_data(page) &&
 | 
								!is_cold_data(page) &&
 | 
				
			||||||
			!IS_ATOMIC_WRITTEN_PAGE(page) &&
 | 
								!IS_ATOMIC_WRITTEN_PAGE(page) &&
 | 
				
			||||||
			need_inplace_update(inode))) {
 | 
								need_inplace_update(inode))) {
 | 
				
			||||||
		rewrite_data_page(fio);
 | 
							err = rewrite_data_page(fio);
 | 
				
			||||||
		set_inode_flag(inode, FI_UPDATE_WRITE);
 | 
							set_inode_flag(inode, FI_UPDATE_WRITE);
 | 
				
			||||||
		trace_f2fs_do_write_data_page(page, IPU);
 | 
							trace_f2fs_do_write_data_page(page, IPU);
 | 
				
			||||||
	} else {
 | 
						} else {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2206,7 +2206,7 @@ void update_meta_page(struct f2fs_sb_info *sbi, void *src, block_t blk_addr);
 | 
				
			||||||
void write_meta_page(struct f2fs_sb_info *sbi, struct page *page);
 | 
					void write_meta_page(struct f2fs_sb_info *sbi, struct page *page);
 | 
				
			||||||
void write_node_page(unsigned int nid, struct f2fs_io_info *fio);
 | 
					void write_node_page(unsigned int nid, struct f2fs_io_info *fio);
 | 
				
			||||||
void write_data_page(struct dnode_of_data *dn, struct f2fs_io_info *fio);
 | 
					void write_data_page(struct dnode_of_data *dn, struct f2fs_io_info *fio);
 | 
				
			||||||
void rewrite_data_page(struct f2fs_io_info *fio);
 | 
					int rewrite_data_page(struct f2fs_io_info *fio);
 | 
				
			||||||
void __f2fs_replace_block(struct f2fs_sb_info *sbi, struct f2fs_summary *sum,
 | 
					void __f2fs_replace_block(struct f2fs_sb_info *sbi, struct f2fs_summary *sum,
 | 
				
			||||||
			block_t old_blkaddr, block_t new_blkaddr,
 | 
								block_t old_blkaddr, block_t new_blkaddr,
 | 
				
			||||||
			bool recover_curseg, bool recover_newaddr);
 | 
								bool recover_curseg, bool recover_newaddr);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1961,11 +1961,11 @@ void write_data_page(struct dnode_of_data *dn, struct f2fs_io_info *fio)
 | 
				
			||||||
	f2fs_update_data_blkaddr(dn, fio->new_blkaddr);
 | 
						f2fs_update_data_blkaddr(dn, fio->new_blkaddr);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void rewrite_data_page(struct f2fs_io_info *fio)
 | 
					int rewrite_data_page(struct f2fs_io_info *fio)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	fio->new_blkaddr = fio->old_blkaddr;
 | 
						fio->new_blkaddr = fio->old_blkaddr;
 | 
				
			||||||
	stat_inc_inplace_blocks(fio->sbi);
 | 
						stat_inc_inplace_blocks(fio->sbi);
 | 
				
			||||||
	f2fs_submit_page_mbio(fio);
 | 
						return f2fs_submit_page_bio(fio);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void __f2fs_replace_block(struct f2fs_sb_info *sbi, struct f2fs_summary *sum,
 | 
					void __f2fs_replace_block(struct f2fs_sb_info *sbi, struct f2fs_summary *sum,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue