aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/linux/f2fs_fs.h3
-rw-r--r--include/trace/events/f2fs.h162
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 */
154struct f2fs_extent { 154struct 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
109struct victim_sel_policy; 114struct 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
892DEFINE_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
887DEFINE_EVENT(f2fs__page, f2fs_readpage, 899DEFINE_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
920DEFINE_EVENT(f2fs__page, f2fs_register_inmem_page,
921
922 TP_PROTO(struct page *page, int type),
923
924 TP_ARGS(page, type)
925);
926
927DEFINE_EVENT(f2fs__page, f2fs_commit_inmem_page,
928
929 TP_PROTO(struct page *page, int type),
930
931 TP_ARGS(page, type)
932);
933
908TRACE_EVENT(f2fs_writepages, 934TRACE_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
1071TRACE_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
1094TRACE_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
1130TRACE_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
1156TRACE_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
1181TRACE_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 */