Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

f2fs: add some tracepoints to debug volatile and atomic writes

Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>

+36 -1
+2
fs/f2fs/data.c
··· 1287 1287 need_inplace_update(inode))) { 1288 1288 rewrite_data_page(page, fio); 1289 1289 set_inode_flag(F2FS_I(inode), FI_UPDATE_WRITE); 1290 + trace_f2fs_do_write_data_page(page, IPU); 1290 1291 } else { 1291 1292 write_data_page(page, &dn, fio); 1292 1293 f2fs_update_extent_cache(&dn); 1294 + trace_f2fs_do_write_data_page(page, OPU); 1293 1295 set_inode_flag(F2FS_I(inode), FI_APPEND_WRITE); 1294 1296 if (page->index == 0) 1295 1297 set_inode_flag(F2FS_I(inode), FI_FIRST_BLOCK_WRITTEN);
+4
fs/f2fs/f2fs.h
··· 556 556 META, 557 557 NR_PAGE_TYPE, 558 558 META_FLUSH, 559 + INMEM, /* the below types are used by tracepoints only. */ 560 + INMEM_DROP, 561 + IPU, 562 + OPU, 559 563 }; 560 564 561 565 struct f2fs_io_info {
+4
fs/f2fs/segment.c
··· 205 205 list_add_tail(&new->list, &fi->inmem_pages); 206 206 inc_page_count(F2FS_I_SB(inode), F2FS_INMEM_PAGES); 207 207 mutex_unlock(&fi->inmem_lock); 208 + 209 + trace_f2fs_register_inmem_page(page, INMEM); 208 210 } 209 211 210 212 void commit_inmem_pages(struct inode *inode, bool abort) ··· 240 238 f2fs_wait_on_page_writeback(cur->page, DATA); 241 239 if (clear_page_dirty_for_io(cur->page)) 242 240 inode_dec_dirty_pages(inode); 241 + trace_f2fs_commit_inmem_page(cur->page, INMEM); 243 242 do_write_data_page(cur->page, &fio); 244 243 submit_bio = true; 245 244 } 246 245 f2fs_put_page(cur->page, 1); 247 246 } else { 247 + trace_f2fs_commit_inmem_page(cur->page, INMEM_DROP); 248 248 put_page(cur->page); 249 249 } 250 250 radix_tree_delete(&fi->inmem_root, cur->page->index);
+26 -1
include/trace/events/f2fs.h
··· 14 14 { NODE, "NODE" }, \ 15 15 { DATA, "DATA" }, \ 16 16 { META, "META" }, \ 17 - { META_FLUSH, "META_FLUSH" }) 17 + { META_FLUSH, "META_FLUSH" }, \ 18 + { INMEM, "INMEM" }, \ 19 + { INMEM_DROP, "INMEM_DROP" }, \ 20 + { IPU, "IN-PLACE" }, \ 21 + { OPU, "OUT-OF-PLACE" }) 18 22 19 23 #define F2FS_BIO_MASK(t) (t & (READA | WRITE_FLUSH_FUA)) 20 24 #define F2FS_BIO_EXTRA_MASK(t) (t & (REQ_META | REQ_PRIO)) ··· 858 854 TP_ARGS(page, type) 859 855 ); 860 856 857 + DEFINE_EVENT(f2fs__page, f2fs_do_write_data_page, 858 + 859 + TP_PROTO(struct page *page, int type), 860 + 861 + TP_ARGS(page, type) 862 + ); 863 + 861 864 DEFINE_EVENT(f2fs__page, f2fs_readpage, 862 865 863 866 TP_PROTO(struct page *page, int type), ··· 880 869 ); 881 870 882 871 DEFINE_EVENT(f2fs__page, f2fs_vm_page_mkwrite, 872 + 873 + TP_PROTO(struct page *page, int type), 874 + 875 + TP_ARGS(page, type) 876 + ); 877 + 878 + DEFINE_EVENT(f2fs__page, f2fs_register_inmem_page, 879 + 880 + TP_PROTO(struct page *page, int type), 881 + 882 + TP_ARGS(page, type) 883 + ); 884 + 885 + DEFINE_EVENT(f2fs__page, f2fs_commit_inmem_page, 883 886 884 887 TP_PROTO(struct page *page, int type), 885 888