diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/f2fs_fs.h | 3 | ||||
-rw-r--r-- | include/trace/events/f2fs.h | 162 |
2 files changed, 163 insertions, 2 deletions
diff --git a/include/linux/f2fs_fs.h b/include/linux/f2fs_fs.h index a23556c32703..591f8c3ef410 100644 --- a/include/linux/f2fs_fs.h +++ b/include/linux/f2fs_fs.h | |||
@@ -153,7 +153,7 @@ struct f2fs_orphan_block { | |||
153 | */ | 153 | */ |
154 | struct f2fs_extent { | 154 | struct f2fs_extent { |
155 | __le32 fofs; /* start file offset of the extent */ | 155 | __le32 fofs; /* start file offset of the extent */ |
156 | __le32 blk_addr; /* start block address of the extent */ | 156 | __le32 blk; /* start block address of the extent */ |
157 | __le32 len; /* lengh of the extent */ | 157 | __le32 len; /* lengh of the extent */ |
158 | } __packed; | 158 | } __packed; |
159 | 159 | ||
@@ -178,6 +178,7 @@ struct f2fs_extent { | |||
178 | #define F2FS_INLINE_DATA 0x02 /* file inline data flag */ | 178 | #define F2FS_INLINE_DATA 0x02 /* file inline data flag */ |
179 | #define F2FS_INLINE_DENTRY 0x04 /* file inline dentry flag */ | 179 | #define F2FS_INLINE_DENTRY 0x04 /* file inline dentry flag */ |
180 | #define F2FS_DATA_EXIST 0x08 /* file inline data exist flag */ | 180 | #define F2FS_DATA_EXIST 0x08 /* file inline data exist flag */ |
181 | #define F2FS_INLINE_DOTS 0x10 /* file having implicit dot dentries */ | ||
181 | 182 | ||
182 | #define MAX_INLINE_DATA (sizeof(__le32) * (DEF_ADDRS_PER_INODE - \ | 183 | #define MAX_INLINE_DATA (sizeof(__le32) * (DEF_ADDRS_PER_INODE - \ |
183 | F2FS_INLINE_XATTR_ADDRS - 1)) | 184 | F2FS_INLINE_XATTR_ADDRS - 1)) |
diff --git a/include/trace/events/f2fs.h b/include/trace/events/f2fs.h index 36f4536b6149..e202dec22e1d 100644 --- a/include/trace/events/f2fs.h +++ b/include/trace/events/f2fs.h | |||
@@ -44,7 +44,11 @@ TRACE_DEFINE_ENUM(CP_DISCARD); | |||
44 | { NODE, "NODE" }, \ | 44 | { NODE, "NODE" }, \ |
45 | { DATA, "DATA" }, \ | 45 | { DATA, "DATA" }, \ |
46 | { META, "META" }, \ | 46 | { META, "META" }, \ |
47 | { META_FLUSH, "META_FLUSH" }) | 47 | { META_FLUSH, "META_FLUSH" }, \ |
48 | { INMEM, "INMEM" }, \ | ||
49 | { INMEM_DROP, "INMEM_DROP" }, \ | ||
50 | { IPU, "IN-PLACE" }, \ | ||
51 | { OPU, "OUT-OF-PLACE" }) | ||
48 | 52 | ||
49 | #define F2FS_BIO_MASK(t) (t & (READA | WRITE_FLUSH_FUA)) | 53 | #define F2FS_BIO_MASK(t) (t & (READA | WRITE_FLUSH_FUA)) |
50 | #define F2FS_BIO_EXTRA_MASK(t) (t & (REQ_META | REQ_PRIO)) | 54 | #define F2FS_BIO_EXTRA_MASK(t) (t & (REQ_META | REQ_PRIO)) |
@@ -104,6 +108,7 @@ TRACE_DEFINE_ENUM(CP_DISCARD); | |||
104 | { CP_UMOUNT, "Umount" }, \ | 108 | { CP_UMOUNT, "Umount" }, \ |
105 | { CP_FASTBOOT, "Fastboot" }, \ | 109 | { CP_FASTBOOT, "Fastboot" }, \ |
106 | { CP_SYNC, "Sync" }, \ | 110 | { CP_SYNC, "Sync" }, \ |
111 | { CP_RECOVERY, "Recovery" }, \ | ||
107 | { CP_DISCARD, "Discard" }) | 112 | { CP_DISCARD, "Discard" }) |
108 | 113 | ||
109 | struct victim_sel_policy; | 114 | struct victim_sel_policy; |
@@ -884,6 +889,13 @@ DEFINE_EVENT(f2fs__page, f2fs_writepage, | |||
884 | TP_ARGS(page, type) | 889 | TP_ARGS(page, type) |
885 | ); | 890 | ); |
886 | 891 | ||
892 | DEFINE_EVENT(f2fs__page, f2fs_do_write_data_page, | ||
893 | |||
894 | TP_PROTO(struct page *page, int type), | ||
895 | |||
896 | TP_ARGS(page, type) | ||
897 | ); | ||
898 | |||
887 | DEFINE_EVENT(f2fs__page, f2fs_readpage, | 899 | DEFINE_EVENT(f2fs__page, f2fs_readpage, |
888 | 900 | ||
889 | TP_PROTO(struct page *page, int type), | 901 | TP_PROTO(struct page *page, int type), |
@@ -905,6 +917,20 @@ DEFINE_EVENT(f2fs__page, f2fs_vm_page_mkwrite, | |||
905 | TP_ARGS(page, type) | 917 | TP_ARGS(page, type) |
906 | ); | 918 | ); |
907 | 919 | ||
920 | DEFINE_EVENT(f2fs__page, f2fs_register_inmem_page, | ||
921 | |||
922 | TP_PROTO(struct page *page, int type), | ||
923 | |||
924 | TP_ARGS(page, type) | ||
925 | ); | ||
926 | |||
927 | DEFINE_EVENT(f2fs__page, f2fs_commit_inmem_page, | ||
928 | |||
929 | TP_PROTO(struct page *page, int type), | ||
930 | |||
931 | TP_ARGS(page, type) | ||
932 | ); | ||
933 | |||
908 | TRACE_EVENT(f2fs_writepages, | 934 | TRACE_EVENT(f2fs_writepages, |
909 | 935 | ||
910 | TP_PROTO(struct inode *inode, struct writeback_control *wbc, int type), | 936 | TP_PROTO(struct inode *inode, struct writeback_control *wbc, int type), |
@@ -1041,6 +1067,140 @@ TRACE_EVENT(f2fs_issue_flush, | |||
1041 | __entry->nobarrier ? "skip (nobarrier)" : "issue", | 1067 | __entry->nobarrier ? "skip (nobarrier)" : "issue", |
1042 | __entry->flush_merge ? " with flush_merge" : "") | 1068 | __entry->flush_merge ? " with flush_merge" : "") |
1043 | ); | 1069 | ); |
1070 | |||
1071 | TRACE_EVENT(f2fs_lookup_extent_tree_start, | ||
1072 | |||
1073 | TP_PROTO(struct inode *inode, unsigned int pgofs), | ||
1074 | |||
1075 | TP_ARGS(inode, pgofs), | ||
1076 | |||
1077 | TP_STRUCT__entry( | ||
1078 | __field(dev_t, dev) | ||
1079 | __field(ino_t, ino) | ||
1080 | __field(unsigned int, pgofs) | ||
1081 | ), | ||
1082 | |||
1083 | TP_fast_assign( | ||
1084 | __entry->dev = inode->i_sb->s_dev; | ||
1085 | __entry->ino = inode->i_ino; | ||
1086 | __entry->pgofs = pgofs; | ||
1087 | ), | ||
1088 | |||
1089 | TP_printk("dev = (%d,%d), ino = %lu, pgofs = %u", | ||
1090 | show_dev_ino(__entry), | ||
1091 | __entry->pgofs) | ||
1092 | ); | ||
1093 | |||
1094 | TRACE_EVENT_CONDITION(f2fs_lookup_extent_tree_end, | ||
1095 | |||
1096 | TP_PROTO(struct inode *inode, unsigned int pgofs, | ||
1097 | struct extent_node *en), | ||
1098 | |||
1099 | TP_ARGS(inode, pgofs, en), | ||
1100 | |||
1101 | TP_CONDITION(en), | ||
1102 | |||
1103 | TP_STRUCT__entry( | ||
1104 | __field(dev_t, dev) | ||
1105 | __field(ino_t, ino) | ||
1106 | __field(unsigned int, pgofs) | ||
1107 | __field(unsigned int, fofs) | ||
1108 | __field(u32, blk) | ||
1109 | __field(unsigned int, len) | ||
1110 | ), | ||
1111 | |||
1112 | TP_fast_assign( | ||
1113 | __entry->dev = inode->i_sb->s_dev; | ||
1114 | __entry->ino = inode->i_ino; | ||
1115 | __entry->pgofs = pgofs; | ||
1116 | __entry->fofs = en->ei.fofs; | ||
1117 | __entry->blk = en->ei.blk; | ||
1118 | __entry->len = en->ei.len; | ||
1119 | ), | ||
1120 | |||
1121 | TP_printk("dev = (%d,%d), ino = %lu, pgofs = %u, " | ||
1122 | "ext_info(fofs: %u, blk: %u, len: %u)", | ||
1123 | show_dev_ino(__entry), | ||
1124 | __entry->pgofs, | ||
1125 | __entry->fofs, | ||
1126 | __entry->blk, | ||
1127 | __entry->len) | ||
1128 | ); | ||
1129 | |||
1130 | TRACE_EVENT(f2fs_update_extent_tree, | ||
1131 | |||
1132 | TP_PROTO(struct inode *inode, unsigned int pgofs, block_t blkaddr), | ||
1133 | |||
1134 | TP_ARGS(inode, pgofs, blkaddr), | ||
1135 | |||
1136 | TP_STRUCT__entry( | ||
1137 | __field(dev_t, dev) | ||
1138 | __field(ino_t, ino) | ||
1139 | __field(unsigned int, pgofs) | ||
1140 | __field(u32, blk) | ||
1141 | ), | ||
1142 | |||
1143 | TP_fast_assign( | ||
1144 | __entry->dev = inode->i_sb->s_dev; | ||
1145 | __entry->ino = inode->i_ino; | ||
1146 | __entry->pgofs = pgofs; | ||
1147 | __entry->blk = blkaddr; | ||
1148 | ), | ||
1149 | |||
1150 | TP_printk("dev = (%d,%d), ino = %lu, pgofs = %u, blkaddr = %u", | ||
1151 | show_dev_ino(__entry), | ||
1152 | __entry->pgofs, | ||
1153 | __entry->blk) | ||
1154 | ); | ||
1155 | |||
1156 | TRACE_EVENT(f2fs_shrink_extent_tree, | ||
1157 | |||
1158 | TP_PROTO(struct f2fs_sb_info *sbi, unsigned int node_cnt, | ||
1159 | unsigned int tree_cnt), | ||
1160 | |||
1161 | TP_ARGS(sbi, node_cnt, tree_cnt), | ||
1162 | |||
1163 | TP_STRUCT__entry( | ||
1164 | __field(dev_t, dev) | ||
1165 | __field(unsigned int, node_cnt) | ||
1166 | __field(unsigned int, tree_cnt) | ||
1167 | ), | ||
1168 | |||
1169 | TP_fast_assign( | ||
1170 | __entry->dev = sbi->sb->s_dev; | ||
1171 | __entry->node_cnt = node_cnt; | ||
1172 | __entry->tree_cnt = tree_cnt; | ||
1173 | ), | ||
1174 | |||
1175 | TP_printk("dev = (%d,%d), shrunk: node_cnt = %u, tree_cnt = %u", | ||
1176 | show_dev(__entry), | ||
1177 | __entry->node_cnt, | ||
1178 | __entry->tree_cnt) | ||
1179 | ); | ||
1180 | |||
1181 | TRACE_EVENT(f2fs_destroy_extent_tree, | ||
1182 | |||
1183 | TP_PROTO(struct inode *inode, unsigned int node_cnt), | ||
1184 | |||
1185 | TP_ARGS(inode, node_cnt), | ||
1186 | |||
1187 | TP_STRUCT__entry( | ||
1188 | __field(dev_t, dev) | ||
1189 | __field(ino_t, ino) | ||
1190 | __field(unsigned int, node_cnt) | ||
1191 | ), | ||
1192 | |||
1193 | TP_fast_assign( | ||
1194 | __entry->dev = inode->i_sb->s_dev; | ||
1195 | __entry->ino = inode->i_ino; | ||
1196 | __entry->node_cnt = node_cnt; | ||
1197 | ), | ||
1198 | |||
1199 | TP_printk("dev = (%d,%d), ino = %lu, destroyed: node_cnt = %u", | ||
1200 | show_dev_ino(__entry), | ||
1201 | __entry->node_cnt) | ||
1202 | ); | ||
1203 | |||
1044 | #endif /* _TRACE_F2FS_H */ | 1204 | #endif /* _TRACE_F2FS_H */ |
1045 | 1205 | ||
1046 | /* This part must be outside protection */ | 1206 | /* This part must be outside protection */ |