f2fs: add app/fs io stat
This patch enables inner app/fs io stats and introduces below virtual fs nodes for exposing stats info: /sys/fs/f2fs/<dev>/iostat_enable /proc/fs/f2fs/<dev>/iostat_info Signed-off-by: Chao Yu <yuchao0@huawei.com> [Jaegeuk Kim: fix wrong stat assignment] Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
This commit is contained in:
@@ -292,6 +292,7 @@ static int __commit_inmem_pages(struct inode *inode,
|
||||
.type = DATA,
|
||||
.op = REQ_OP_WRITE,
|
||||
.op_flags = REQ_SYNC | REQ_PRIO,
|
||||
.io_type = FS_DATA_IO,
|
||||
};
|
||||
pgoff_t last_idx = ULONG_MAX;
|
||||
int err = 0;
|
||||
@@ -823,6 +824,8 @@ static void __submit_discard_cmd(struct f2fs_sb_info *sbi,
|
||||
submit_bio(bio);
|
||||
list_move_tail(&dc->list, &dcc->wait_list);
|
||||
__check_sit_bitmap(sbi, dc->start, dc->start + dc->len);
|
||||
|
||||
f2fs_update_iostat(sbi, FS_DISCARD, 1);
|
||||
}
|
||||
} else {
|
||||
__remove_discard_cmd(sbi, dc);
|
||||
@@ -2271,7 +2274,8 @@ reallocate:
|
||||
}
|
||||
}
|
||||
|
||||
void write_meta_page(struct f2fs_sb_info *sbi, struct page *page)
|
||||
void write_meta_page(struct f2fs_sb_info *sbi, struct page *page,
|
||||
enum iostat_type io_type)
|
||||
{
|
||||
struct f2fs_io_info fio = {
|
||||
.sbi = sbi,
|
||||
@@ -2290,6 +2294,8 @@ void write_meta_page(struct f2fs_sb_info *sbi, struct page *page)
|
||||
|
||||
set_page_writeback(page);
|
||||
f2fs_submit_page_write(&fio);
|
||||
|
||||
f2fs_update_iostat(sbi, io_type, F2FS_BLKSIZE);
|
||||
}
|
||||
|
||||
void write_node_page(unsigned int nid, struct f2fs_io_info *fio)
|
||||
@@ -2298,6 +2304,8 @@ void write_node_page(unsigned int nid, struct f2fs_io_info *fio)
|
||||
|
||||
set_summary(&sum, nid, 0, 0);
|
||||
do_write_page(&sum, fio);
|
||||
|
||||
f2fs_update_iostat(fio->sbi, fio->io_type, F2FS_BLKSIZE);
|
||||
}
|
||||
|
||||
void write_data_page(struct dnode_of_data *dn, struct f2fs_io_info *fio)
|
||||
@@ -2311,13 +2319,22 @@ void write_data_page(struct dnode_of_data *dn, struct f2fs_io_info *fio)
|
||||
set_summary(&sum, dn->nid, dn->ofs_in_node, ni.version);
|
||||
do_write_page(&sum, fio);
|
||||
f2fs_update_data_blkaddr(dn, fio->new_blkaddr);
|
||||
|
||||
f2fs_update_iostat(sbi, fio->io_type, F2FS_BLKSIZE);
|
||||
}
|
||||
|
||||
int rewrite_data_page(struct f2fs_io_info *fio)
|
||||
{
|
||||
int err;
|
||||
|
||||
fio->new_blkaddr = fio->old_blkaddr;
|
||||
stat_inc_inplace_blocks(fio->sbi);
|
||||
return f2fs_submit_page_bio(fio);
|
||||
|
||||
err = f2fs_submit_page_bio(fio);
|
||||
|
||||
f2fs_update_iostat(fio->sbi, fio->io_type, F2FS_BLKSIZE);
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
void __f2fs_replace_block(struct f2fs_sb_info *sbi, struct f2fs_summary *sum,
|
||||
|
||||
Reference in New Issue
Block a user