blob: e37973526153a83c2d96169b77e507525c53cc53 [file] [log] [blame]
liubo1abe9b82011-03-24 11:18:59 +00001#undef TRACE_SYSTEM
2#define TRACE_SYSTEM btrfs
3
4#if !defined(_TRACE_BTRFS_H) || defined(TRACE_HEADER_MULTI_READ)
5#define _TRACE_BTRFS_H
6
7#include <linux/writeback.h>
8#include <linux/tracepoint.h>
Vlastimil Babka420adbe92016-03-15 14:55:52 -07009#include <trace/events/mmflags.h>
liubo1abe9b82011-03-24 11:18:59 +000010
11struct btrfs_root;
12struct btrfs_fs_info;
13struct btrfs_inode;
14struct extent_map;
Liu Bo09ed2f12017-03-10 11:09:48 -080015struct btrfs_file_extent_item;
liubo1abe9b82011-03-24 11:18:59 +000016struct btrfs_ordered_extent;
17struct btrfs_delayed_ref_node;
18struct btrfs_delayed_tree_ref;
19struct btrfs_delayed_data_ref;
20struct btrfs_delayed_ref_head;
Josef Bacik3f7de032011-11-10 08:29:20 -050021struct btrfs_block_group_cache;
22struct btrfs_free_cluster;
liubo1abe9b82011-03-24 11:18:59 +000023struct map_lookup;
24struct extent_buffer;
Qu Wenruo52483bc2014-03-06 04:19:50 +000025struct btrfs_work;
Qu Wenruoc3a46892014-03-12 08:05:33 +000026struct __btrfs_workqueue;
Mark Fasheh0f5dcf82016-03-29 17:19:55 -070027struct btrfs_qgroup_extent_record;
Qu Wenruo3159fe72017-03-13 15:52:08 +080028struct btrfs_qgroup;
liubo1abe9b82011-03-24 11:18:59 +000029
30#define show_ref_type(type) \
31 __print_symbolic(type, \
32 { BTRFS_TREE_BLOCK_REF_KEY, "TREE_BLOCK_REF" }, \
33 { BTRFS_EXTENT_DATA_REF_KEY, "EXTENT_DATA_REF" }, \
34 { BTRFS_EXTENT_REF_V0_KEY, "EXTENT_REF_V0" }, \
35 { BTRFS_SHARED_BLOCK_REF_KEY, "SHARED_BLOCK_REF" }, \
36 { BTRFS_SHARED_DATA_REF_KEY, "SHARED_DATA_REF" })
37
38#define __show_root_type(obj) \
liubo7f34b742011-04-19 09:35:31 +080039 __print_symbolic_u64(obj, \
liubo1abe9b82011-03-24 11:18:59 +000040 { BTRFS_ROOT_TREE_OBJECTID, "ROOT_TREE" }, \
41 { BTRFS_EXTENT_TREE_OBJECTID, "EXTENT_TREE" }, \
42 { BTRFS_CHUNK_TREE_OBJECTID, "CHUNK_TREE" }, \
43 { BTRFS_DEV_TREE_OBJECTID, "DEV_TREE" }, \
44 { BTRFS_FS_TREE_OBJECTID, "FS_TREE" }, \
45 { BTRFS_ROOT_TREE_DIR_OBJECTID, "ROOT_TREE_DIR" }, \
46 { BTRFS_CSUM_TREE_OBJECTID, "CSUM_TREE" }, \
47 { BTRFS_TREE_LOG_OBJECTID, "TREE_LOG" }, \
Liu Boe112e2b2013-05-26 13:50:28 +000048 { BTRFS_QUOTA_TREE_OBJECTID, "QUOTA_TREE" }, \
liubo1abe9b82011-03-24 11:18:59 +000049 { BTRFS_TREE_RELOC_OBJECTID, "TREE_RELOC" }, \
Omar Sandoval208acb82015-09-29 20:50:34 -070050 { BTRFS_UUID_TREE_OBJECTID, "UUID_TREE" }, \
51 { BTRFS_FREE_SPACE_TREE_OBJECTID, "FREE_SPACE_TREE" }, \
liubo1abe9b82011-03-24 11:18:59 +000052 { BTRFS_DATA_RELOC_TREE_OBJECTID, "DATA_RELOC_TREE" })
53
54#define show_root_type(obj) \
55 obj, ((obj >= BTRFS_DATA_RELOC_TREE_OBJECTID) || \
Liu Bofb57dc82012-11-30 11:24:22 +000056 (obj >= BTRFS_ROOT_TREE_OBJECTID && \
Liu Boe112e2b2013-05-26 13:50:28 +000057 obj <= BTRFS_QUOTA_TREE_OBJECTID)) ? __show_root_type(obj) : "-"
liubo1abe9b82011-03-24 11:18:59 +000058
Liu Bo09ed2f12017-03-10 11:09:48 -080059#define show_fi_type(type) \
60 __print_symbolic(type, \
61 { BTRFS_FILE_EXTENT_INLINE, "INLINE" }, \
62 { BTRFS_FILE_EXTENT_REG, "REG" }, \
63 { BTRFS_FILE_EXTENT_PREALLOC, "PREALLOC"})
64
Josef Bacik3f7de032011-11-10 08:29:20 -050065#define BTRFS_GROUP_FLAGS \
Liu Boe112e2b2013-05-26 13:50:28 +000066 { BTRFS_BLOCK_GROUP_DATA, "DATA"}, \
67 { BTRFS_BLOCK_GROUP_SYSTEM, "SYSTEM"}, \
68 { BTRFS_BLOCK_GROUP_METADATA, "METADATA"}, \
69 { BTRFS_BLOCK_GROUP_RAID0, "RAID0"}, \
70 { BTRFS_BLOCK_GROUP_RAID1, "RAID1"}, \
71 { BTRFS_BLOCK_GROUP_DUP, "DUP"}, \
72 { BTRFS_BLOCK_GROUP_RAID10, "RAID10"}, \
73 { BTRFS_BLOCK_GROUP_RAID5, "RAID5"}, \
74 { BTRFS_BLOCK_GROUP_RAID6, "RAID6"}
Josef Bacik3f7de032011-11-10 08:29:20 -050075
Josef Bacik8c2a3ca2012-01-10 10:31:31 -050076#define BTRFS_UUID_SIZE 16
Jeff Mahoneybc074522016-06-09 17:27:55 -040077#define TP_STRUCT__entry_fsid __array(u8, fsid, BTRFS_UUID_SIZE)
78
79#define TP_fast_assign_fsid(fs_info) \
80 memcpy(__entry->fsid, fs_info->fsid, BTRFS_UUID_SIZE)
81
82#define TP_STRUCT__entry_btrfs(args...) \
83 TP_STRUCT__entry( \
84 TP_STRUCT__entry_fsid \
85 args)
86#define TP_fast_assign_btrfs(fs_info, args...) \
87 TP_fast_assign( \
88 TP_fast_assign_fsid(fs_info); \
89 args)
90#define TP_printk_btrfs(fmt, args...) \
91 TP_printk("%pU: " fmt, __entry->fsid, args)
Josef Bacik8c2a3ca2012-01-10 10:31:31 -050092
liubo1abe9b82011-03-24 11:18:59 +000093TRACE_EVENT(btrfs_transaction_commit,
94
95 TP_PROTO(struct btrfs_root *root),
96
97 TP_ARGS(root),
98
Jeff Mahoneybc074522016-06-09 17:27:55 -040099 TP_STRUCT__entry_btrfs(
liubo1abe9b82011-03-24 11:18:59 +0000100 __field( u64, generation )
101 __field( u64, root_objectid )
102 ),
103
Jeff Mahoneybc074522016-06-09 17:27:55 -0400104 TP_fast_assign_btrfs(root->fs_info,
liubo1abe9b82011-03-24 11:18:59 +0000105 __entry->generation = root->fs_info->generation;
106 __entry->root_objectid = root->root_key.objectid;
107 ),
108
Jeff Mahoneybc074522016-06-09 17:27:55 -0400109 TP_printk_btrfs("root = %llu(%s), gen = %llu",
liubo1abe9b82011-03-24 11:18:59 +0000110 show_root_type(__entry->root_objectid),
111 (unsigned long long)__entry->generation)
112);
113
114DECLARE_EVENT_CLASS(btrfs__inode,
115
116 TP_PROTO(struct inode *inode),
117
118 TP_ARGS(inode),
119
Jeff Mahoneybc074522016-06-09 17:27:55 -0400120 TP_STRUCT__entry_btrfs(
liubo1abe9b82011-03-24 11:18:59 +0000121 __field( ino_t, ino )
122 __field( blkcnt_t, blocks )
123 __field( u64, disk_i_size )
124 __field( u64, generation )
125 __field( u64, last_trans )
126 __field( u64, logged_trans )
127 __field( u64, root_objectid )
128 ),
129
Jeff Mahoneybc074522016-06-09 17:27:55 -0400130 TP_fast_assign_btrfs(btrfs_sb(inode->i_sb),
liubo1abe9b82011-03-24 11:18:59 +0000131 __entry->ino = inode->i_ino;
132 __entry->blocks = inode->i_blocks;
133 __entry->disk_i_size = BTRFS_I(inode)->disk_i_size;
134 __entry->generation = BTRFS_I(inode)->generation;
135 __entry->last_trans = BTRFS_I(inode)->last_trans;
136 __entry->logged_trans = BTRFS_I(inode)->logged_trans;
137 __entry->root_objectid =
138 BTRFS_I(inode)->root->root_key.objectid;
139 ),
140
David Sterba562a7a02017-01-06 15:51:36 +0100141 TP_printk_btrfs("root=%llu(%s) gen=%llu ino=%lu blocks=%llu "
142 "disk_i_size=%llu last_trans=%llu logged_trans=%llu",
liubo1abe9b82011-03-24 11:18:59 +0000143 show_root_type(__entry->root_objectid),
144 (unsigned long long)__entry->generation,
145 (unsigned long)__entry->ino,
146 (unsigned long long)__entry->blocks,
147 (unsigned long long)__entry->disk_i_size,
148 (unsigned long long)__entry->last_trans,
149 (unsigned long long)__entry->logged_trans)
150);
151
152DEFINE_EVENT(btrfs__inode, btrfs_inode_new,
153
154 TP_PROTO(struct inode *inode),
155
156 TP_ARGS(inode)
157);
158
159DEFINE_EVENT(btrfs__inode, btrfs_inode_request,
160
161 TP_PROTO(struct inode *inode),
162
163 TP_ARGS(inode)
164);
165
166DEFINE_EVENT(btrfs__inode, btrfs_inode_evict,
167
168 TP_PROTO(struct inode *inode),
169
170 TP_ARGS(inode)
171);
172
173#define __show_map_type(type) \
liubo7f34b742011-04-19 09:35:31 +0800174 __print_symbolic_u64(type, \
liubo1abe9b82011-03-24 11:18:59 +0000175 { EXTENT_MAP_LAST_BYTE, "LAST_BYTE" }, \
176 { EXTENT_MAP_HOLE, "HOLE" }, \
177 { EXTENT_MAP_INLINE, "INLINE" }, \
178 { EXTENT_MAP_DELALLOC, "DELALLOC" })
179
180#define show_map_type(type) \
181 type, (type >= EXTENT_MAP_LAST_BYTE) ? "-" : __show_map_type(type)
182
183#define show_map_flags(flag) \
184 __print_flags(flag, "|", \
Liu Bo254a2d12014-09-17 21:36:41 +0800185 { (1 << EXTENT_FLAG_PINNED), "PINNED" },\
186 { (1 << EXTENT_FLAG_COMPRESSED), "COMPRESSED" },\
187 { (1 << EXTENT_FLAG_VACANCY), "VACANCY" },\
188 { (1 << EXTENT_FLAG_PREALLOC), "PREALLOC" },\
189 { (1 << EXTENT_FLAG_LOGGING), "LOGGING" },\
190 { (1 << EXTENT_FLAG_FILLING), "FILLING" },\
191 { (1 << EXTENT_FLAG_FS_MAPPING), "FS_MAPPING" })
liubo1abe9b82011-03-24 11:18:59 +0000192
Steven Rostedt4cd85872013-11-14 22:57:29 -0500193TRACE_EVENT_CONDITION(btrfs_get_extent,
liubo1abe9b82011-03-24 11:18:59 +0000194
Nikolay Borisov4a0cc7c2017-01-10 20:35:31 +0200195 TP_PROTO(struct btrfs_root *root, struct btrfs_inode *inode,
Liu Bo92a1bf72016-11-17 15:00:50 -0800196 struct extent_map *map),
liubo1abe9b82011-03-24 11:18:59 +0000197
Liu Bo92a1bf72016-11-17 15:00:50 -0800198 TP_ARGS(root, inode, map),
liubo1abe9b82011-03-24 11:18:59 +0000199
Steven Rostedt4cd85872013-11-14 22:57:29 -0500200 TP_CONDITION(map),
201
Jeff Mahoneybc074522016-06-09 17:27:55 -0400202 TP_STRUCT__entry_btrfs(
liubo1abe9b82011-03-24 11:18:59 +0000203 __field( u64, root_objectid )
Liu Bo92a1bf72016-11-17 15:00:50 -0800204 __field( u64, ino )
liubo1abe9b82011-03-24 11:18:59 +0000205 __field( u64, start )
206 __field( u64, len )
207 __field( u64, orig_start )
208 __field( u64, block_start )
209 __field( u64, block_len )
210 __field( unsigned long, flags )
211 __field( int, refs )
212 __field( unsigned int, compress_type )
213 ),
214
Jeff Mahoneybc074522016-06-09 17:27:55 -0400215 TP_fast_assign_btrfs(root->fs_info,
liubo1abe9b82011-03-24 11:18:59 +0000216 __entry->root_objectid = root->root_key.objectid;
Liu Bo92a1bf72016-11-17 15:00:50 -0800217 __entry->ino = btrfs_ino(inode);
218 __entry->start = map->start;
liubo1abe9b82011-03-24 11:18:59 +0000219 __entry->len = map->len;
220 __entry->orig_start = map->orig_start;
221 __entry->block_start = map->block_start;
222 __entry->block_len = map->block_len;
223 __entry->flags = map->flags;
Elena Reshetova490b54d2017-03-03 10:55:12 +0200224 __entry->refs = refcount_read(&map->refs);
liubo1abe9b82011-03-24 11:18:59 +0000225 __entry->compress_type = map->compress_type;
226 ),
227
David Sterba562a7a02017-01-06 15:51:36 +0100228 TP_printk_btrfs("root=%llu(%s) ino=%llu start=%llu len=%llu "
229 "orig_start=%llu block_start=%llu(%s) "
230 "block_len=%llu flags=%s refs=%u "
231 "compress_type=%u",
liubo1abe9b82011-03-24 11:18:59 +0000232 show_root_type(__entry->root_objectid),
Liu Bo92a1bf72016-11-17 15:00:50 -0800233 (unsigned long long)__entry->ino,
liubo1abe9b82011-03-24 11:18:59 +0000234 (unsigned long long)__entry->start,
235 (unsigned long long)__entry->len,
236 (unsigned long long)__entry->orig_start,
237 show_map_type(__entry->block_start),
238 (unsigned long long)__entry->block_len,
239 show_map_flags(__entry->flags),
240 __entry->refs, __entry->compress_type)
241);
242
Liu Bo09ed2f12017-03-10 11:09:48 -0800243/* file extent item */
244DECLARE_EVENT_CLASS(btrfs__file_extent_item_regular,
245
246 TP_PROTO(struct btrfs_inode *bi, struct extent_buffer *l,
247 struct btrfs_file_extent_item *fi, u64 start),
248
249 TP_ARGS(bi, l, fi, start),
250
251 TP_STRUCT__entry_btrfs(
252 __field( u64, root_obj )
253 __field( u64, ino )
254 __field( loff_t, isize )
255 __field( u64, disk_isize )
256 __field( u64, num_bytes )
257 __field( u64, ram_bytes )
258 __field( u64, disk_bytenr )
259 __field( u64, disk_num_bytes )
260 __field( u64, extent_offset )
261 __field( u8, extent_type )
262 __field( u8, compression )
263 __field( u64, extent_start )
264 __field( u64, extent_end )
265 ),
266
267 TP_fast_assign_btrfs(bi->root->fs_info,
268 __entry->root_obj = bi->root->objectid;
269 __entry->ino = btrfs_ino(bi);
270 __entry->isize = bi->vfs_inode.i_size;
271 __entry->disk_isize = bi->disk_i_size;
272 __entry->num_bytes = btrfs_file_extent_num_bytes(l, fi);
273 __entry->ram_bytes = btrfs_file_extent_ram_bytes(l, fi);
274 __entry->disk_bytenr = btrfs_file_extent_disk_bytenr(l, fi);
275 __entry->disk_num_bytes = btrfs_file_extent_disk_num_bytes(l, fi);
276 __entry->extent_offset = btrfs_file_extent_offset(l, fi);
277 __entry->extent_type = btrfs_file_extent_type(l, fi);
278 __entry->compression = btrfs_file_extent_compression(l, fi);
279 __entry->extent_start = start;
280 __entry->extent_end = (start + __entry->num_bytes);
281 ),
282
283 TP_printk_btrfs(
284 "root=%llu(%s) inode=%llu size=%llu disk_isize=%llu "
285 "file extent range=[%llu %llu] "
286 "(num_bytes=%llu ram_bytes=%llu disk_bytenr=%llu "
287 "disk_num_bytes=%llu extent_offset=%llu type=%s "
288 "compression=%u",
289 show_root_type(__entry->root_obj), __entry->ino,
290 __entry->isize,
291 __entry->disk_isize, __entry->extent_start,
292 __entry->extent_end, __entry->num_bytes, __entry->ram_bytes,
293 __entry->disk_bytenr, __entry->disk_num_bytes,
294 __entry->extent_offset, show_fi_type(__entry->extent_type),
295 __entry->compression)
296);
297
298DECLARE_EVENT_CLASS(
299 btrfs__file_extent_item_inline,
300
301 TP_PROTO(struct btrfs_inode *bi, struct extent_buffer *l,
302 struct btrfs_file_extent_item *fi, int slot, u64 start),
303
304 TP_ARGS(bi, l, fi, slot, start),
305
306 TP_STRUCT__entry_btrfs(
307 __field( u64, root_obj )
308 __field( u64, ino )
309 __field( loff_t, isize )
310 __field( u64, disk_isize )
311 __field( u8, extent_type )
312 __field( u8, compression )
313 __field( u64, extent_start )
314 __field( u64, extent_end )
315 ),
316
317 TP_fast_assign_btrfs(
318 bi->root->fs_info,
319 __entry->root_obj = bi->root->objectid;
320 __entry->ino = btrfs_ino(bi);
321 __entry->isize = bi->vfs_inode.i_size;
322 __entry->disk_isize = bi->disk_i_size;
323 __entry->extent_type = btrfs_file_extent_type(l, fi);
324 __entry->compression = btrfs_file_extent_compression(l, fi);
325 __entry->extent_start = start;
326 __entry->extent_end = (start + btrfs_file_extent_inline_len(l, slot, fi));
327 ),
328
329 TP_printk_btrfs(
330 "root=%llu(%s) inode=%llu size=%llu disk_isize=%llu "
331 "file extent range=[%llu %llu] "
332 "extent_type=%s compression=%u",
333 show_root_type(__entry->root_obj), __entry->ino, __entry->isize,
334 __entry->disk_isize, __entry->extent_start,
335 __entry->extent_end, show_fi_type(__entry->extent_type),
336 __entry->compression)
337);
338
339DEFINE_EVENT(
340 btrfs__file_extent_item_regular, btrfs_get_extent_show_fi_regular,
341
342 TP_PROTO(struct btrfs_inode *bi, struct extent_buffer *l,
343 struct btrfs_file_extent_item *fi, u64 start),
344
345 TP_ARGS(bi, l, fi, start)
346);
347
348DEFINE_EVENT(
349 btrfs__file_extent_item_regular, btrfs_truncate_show_fi_regular,
350
351 TP_PROTO(struct btrfs_inode *bi, struct extent_buffer *l,
352 struct btrfs_file_extent_item *fi, u64 start),
353
354 TP_ARGS(bi, l, fi, start)
355);
356
357DEFINE_EVENT(
358 btrfs__file_extent_item_inline, btrfs_get_extent_show_fi_inline,
359
360 TP_PROTO(struct btrfs_inode *bi, struct extent_buffer *l,
361 struct btrfs_file_extent_item *fi, int slot, u64 start),
362
363 TP_ARGS(bi, l, fi, slot, start)
364);
365
366DEFINE_EVENT(
367 btrfs__file_extent_item_inline, btrfs_truncate_show_fi_inline,
368
369 TP_PROTO(struct btrfs_inode *bi, struct extent_buffer *l,
370 struct btrfs_file_extent_item *fi, int slot, u64 start),
371
372 TP_ARGS(bi, l, fi, slot, start)
373);
374
Liu Bo9d04a8c2013-11-06 12:04:13 +0800375#define show_ordered_flags(flags) \
376 __print_flags(flags, "|", \
377 { (1 << BTRFS_ORDERED_IO_DONE), "IO_DONE" }, \
378 { (1 << BTRFS_ORDERED_COMPLETE), "COMPLETE" }, \
379 { (1 << BTRFS_ORDERED_NOCOW), "NOCOW" }, \
380 { (1 << BTRFS_ORDERED_COMPRESSED), "COMPRESSED" }, \
381 { (1 << BTRFS_ORDERED_PREALLOC), "PREALLOC" }, \
382 { (1 << BTRFS_ORDERED_DIRECT), "DIRECT" }, \
383 { (1 << BTRFS_ORDERED_IOERR), "IOERR" }, \
384 { (1 << BTRFS_ORDERED_UPDATED_ISIZE), "UPDATED_ISIZE" }, \
Liu Bo792ddef2013-11-06 12:04:14 +0800385 { (1 << BTRFS_ORDERED_LOGGED_CSUM), "LOGGED_CSUM" }, \
386 { (1 << BTRFS_ORDERED_TRUNCATED), "TRUNCATED" })
Liu Boe112e2b2013-05-26 13:50:28 +0000387
liubo1abe9b82011-03-24 11:18:59 +0000388
389DECLARE_EVENT_CLASS(btrfs__ordered_extent,
390
391 TP_PROTO(struct inode *inode, struct btrfs_ordered_extent *ordered),
392
393 TP_ARGS(inode, ordered),
394
Jeff Mahoneybc074522016-06-09 17:27:55 -0400395 TP_STRUCT__entry_btrfs(
liubo1abe9b82011-03-24 11:18:59 +0000396 __field( ino_t, ino )
397 __field( u64, file_offset )
398 __field( u64, start )
399 __field( u64, len )
400 __field( u64, disk_len )
401 __field( u64, bytes_left )
402 __field( unsigned long, flags )
403 __field( int, compress_type )
404 __field( int, refs )
405 __field( u64, root_objectid )
Liu Bo78566542016-11-30 16:10:10 -0800406 __field( u64, truncated_len )
liubo1abe9b82011-03-24 11:18:59 +0000407 ),
408
Jeff Mahoneybc074522016-06-09 17:27:55 -0400409 TP_fast_assign_btrfs(btrfs_sb(inode->i_sb),
liubo1abe9b82011-03-24 11:18:59 +0000410 __entry->ino = inode->i_ino;
411 __entry->file_offset = ordered->file_offset;
412 __entry->start = ordered->start;
413 __entry->len = ordered->len;
414 __entry->disk_len = ordered->disk_len;
415 __entry->bytes_left = ordered->bytes_left;
416 __entry->flags = ordered->flags;
417 __entry->compress_type = ordered->compress_type;
Elena Reshetovae76edab2017-03-03 10:55:13 +0200418 __entry->refs = refcount_read(&ordered->refs);
liubo1abe9b82011-03-24 11:18:59 +0000419 __entry->root_objectid =
420 BTRFS_I(inode)->root->root_key.objectid;
Liu Bo78566542016-11-30 16:10:10 -0800421 __entry->truncated_len = ordered->truncated_len;
liubo1abe9b82011-03-24 11:18:59 +0000422 ),
423
David Sterba562a7a02017-01-06 15:51:36 +0100424 TP_printk_btrfs("root=%llu(%s) ino=%llu file_offset=%llu "
425 "start=%llu len=%llu disk_len=%llu "
426 "truncated_len=%llu "
427 "bytes_left=%llu flags=%s compress_type=%d "
428 "refs=%d",
liubo1abe9b82011-03-24 11:18:59 +0000429 show_root_type(__entry->root_objectid),
430 (unsigned long long)__entry->ino,
431 (unsigned long long)__entry->file_offset,
432 (unsigned long long)__entry->start,
433 (unsigned long long)__entry->len,
434 (unsigned long long)__entry->disk_len,
Liu Bo78566542016-11-30 16:10:10 -0800435 (unsigned long long)__entry->truncated_len,
liubo1abe9b82011-03-24 11:18:59 +0000436 (unsigned long long)__entry->bytes_left,
437 show_ordered_flags(__entry->flags),
438 __entry->compress_type, __entry->refs)
439);
440
441DEFINE_EVENT(btrfs__ordered_extent, btrfs_ordered_extent_add,
442
443 TP_PROTO(struct inode *inode, struct btrfs_ordered_extent *ordered),
444
445 TP_ARGS(inode, ordered)
446);
447
448DEFINE_EVENT(btrfs__ordered_extent, btrfs_ordered_extent_remove,
449
450 TP_PROTO(struct inode *inode, struct btrfs_ordered_extent *ordered),
451
452 TP_ARGS(inode, ordered)
453);
454
455DEFINE_EVENT(btrfs__ordered_extent, btrfs_ordered_extent_start,
456
457 TP_PROTO(struct inode *inode, struct btrfs_ordered_extent *ordered),
458
459 TP_ARGS(inode, ordered)
460);
461
462DEFINE_EVENT(btrfs__ordered_extent, btrfs_ordered_extent_put,
463
464 TP_PROTO(struct inode *inode, struct btrfs_ordered_extent *ordered),
465
466 TP_ARGS(inode, ordered)
467);
468
469DECLARE_EVENT_CLASS(btrfs__writepage,
470
471 TP_PROTO(struct page *page, struct inode *inode,
472 struct writeback_control *wbc),
473
474 TP_ARGS(page, inode, wbc),
475
Jeff Mahoneybc074522016-06-09 17:27:55 -0400476 TP_STRUCT__entry_btrfs(
liubo1abe9b82011-03-24 11:18:59 +0000477 __field( ino_t, ino )
478 __field( pgoff_t, index )
479 __field( long, nr_to_write )
480 __field( long, pages_skipped )
481 __field( loff_t, range_start )
482 __field( loff_t, range_end )
liubo1abe9b82011-03-24 11:18:59 +0000483 __field( char, for_kupdate )
484 __field( char, for_reclaim )
485 __field( char, range_cyclic )
486 __field( pgoff_t, writeback_index )
487 __field( u64, root_objectid )
488 ),
489
Jeff Mahoneybc074522016-06-09 17:27:55 -0400490 TP_fast_assign_btrfs(btrfs_sb(inode->i_sb),
liubo1abe9b82011-03-24 11:18:59 +0000491 __entry->ino = inode->i_ino;
492 __entry->index = page->index;
493 __entry->nr_to_write = wbc->nr_to_write;
494 __entry->pages_skipped = wbc->pages_skipped;
495 __entry->range_start = wbc->range_start;
496 __entry->range_end = wbc->range_end;
liubo1abe9b82011-03-24 11:18:59 +0000497 __entry->for_kupdate = wbc->for_kupdate;
498 __entry->for_reclaim = wbc->for_reclaim;
499 __entry->range_cyclic = wbc->range_cyclic;
500 __entry->writeback_index = inode->i_mapping->writeback_index;
501 __entry->root_objectid =
502 BTRFS_I(inode)->root->root_key.objectid;
503 ),
504
David Sterba562a7a02017-01-06 15:51:36 +0100505 TP_printk_btrfs("root=%llu(%s) ino=%lu page_index=%lu "
506 "nr_to_write=%ld pages_skipped=%ld range_start=%llu "
507 "range_end=%llu for_kupdate=%d "
508 "for_reclaim=%d range_cyclic=%d writeback_index=%lu",
liubo1abe9b82011-03-24 11:18:59 +0000509 show_root_type(__entry->root_objectid),
510 (unsigned long)__entry->ino, __entry->index,
511 __entry->nr_to_write, __entry->pages_skipped,
512 __entry->range_start, __entry->range_end,
Wu Fengguang846d5a02011-05-05 21:10:38 -0600513 __entry->for_kupdate,
liubo1abe9b82011-03-24 11:18:59 +0000514 __entry->for_reclaim, __entry->range_cyclic,
515 (unsigned long)__entry->writeback_index)
516);
517
518DEFINE_EVENT(btrfs__writepage, __extent_writepage,
519
520 TP_PROTO(struct page *page, struct inode *inode,
521 struct writeback_control *wbc),
522
523 TP_ARGS(page, inode, wbc)
524);
525
526TRACE_EVENT(btrfs_writepage_end_io_hook,
527
528 TP_PROTO(struct page *page, u64 start, u64 end, int uptodate),
529
530 TP_ARGS(page, start, end, uptodate),
531
Jeff Mahoneybc074522016-06-09 17:27:55 -0400532 TP_STRUCT__entry_btrfs(
liubo1abe9b82011-03-24 11:18:59 +0000533 __field( ino_t, ino )
534 __field( pgoff_t, index )
535 __field( u64, start )
536 __field( u64, end )
537 __field( int, uptodate )
538 __field( u64, root_objectid )
539 ),
540
Jeff Mahoneybc074522016-06-09 17:27:55 -0400541 TP_fast_assign_btrfs(btrfs_sb(page->mapping->host->i_sb),
liubo1abe9b82011-03-24 11:18:59 +0000542 __entry->ino = page->mapping->host->i_ino;
543 __entry->index = page->index;
544 __entry->start = start;
545 __entry->end = end;
546 __entry->uptodate = uptodate;
547 __entry->root_objectid =
548 BTRFS_I(page->mapping->host)->root->root_key.objectid;
549 ),
550
David Sterba562a7a02017-01-06 15:51:36 +0100551 TP_printk_btrfs("root=%llu(%s) ino=%lu page_index=%lu start=%llu "
552 "end=%llu uptodate=%d",
liubo1abe9b82011-03-24 11:18:59 +0000553 show_root_type(__entry->root_objectid),
554 (unsigned long)__entry->ino, (unsigned long)__entry->index,
555 (unsigned long long)__entry->start,
556 (unsigned long long)__entry->end, __entry->uptodate)
557);
558
559TRACE_EVENT(btrfs_sync_file,
560
561 TP_PROTO(struct file *file, int datasync),
562
563 TP_ARGS(file, datasync),
564
Jeff Mahoneybc074522016-06-09 17:27:55 -0400565 TP_STRUCT__entry_btrfs(
liubo1abe9b82011-03-24 11:18:59 +0000566 __field( ino_t, ino )
567 __field( ino_t, parent )
568 __field( int, datasync )
569 __field( u64, root_objectid )
570 ),
571
572 TP_fast_assign(
573 struct dentry *dentry = file->f_path.dentry;
David Howells2b0143b2015-03-17 22:25:59 +0000574 struct inode *inode = d_inode(dentry);
liubo1abe9b82011-03-24 11:18:59 +0000575
Jeff Mahoneybc074522016-06-09 17:27:55 -0400576 TP_fast_assign_fsid(btrfs_sb(file->f_path.dentry->d_sb));
liubo1abe9b82011-03-24 11:18:59 +0000577 __entry->ino = inode->i_ino;
David Howells2b0143b2015-03-17 22:25:59 +0000578 __entry->parent = d_inode(dentry->d_parent)->i_ino;
liubo1abe9b82011-03-24 11:18:59 +0000579 __entry->datasync = datasync;
580 __entry->root_objectid =
581 BTRFS_I(inode)->root->root_key.objectid;
582 ),
583
David Sterba562a7a02017-01-06 15:51:36 +0100584 TP_printk_btrfs("root=%llu(%s) ino=%ld parent=%ld datasync=%d",
liubo1abe9b82011-03-24 11:18:59 +0000585 show_root_type(__entry->root_objectid),
586 (unsigned long)__entry->ino, (unsigned long)__entry->parent,
587 __entry->datasync)
588);
589
590TRACE_EVENT(btrfs_sync_fs,
591
Jeff Mahoneybc074522016-06-09 17:27:55 -0400592 TP_PROTO(struct btrfs_fs_info *fs_info, int wait),
liubo1abe9b82011-03-24 11:18:59 +0000593
Jeff Mahoneybc074522016-06-09 17:27:55 -0400594 TP_ARGS(fs_info, wait),
liubo1abe9b82011-03-24 11:18:59 +0000595
Jeff Mahoneybc074522016-06-09 17:27:55 -0400596 TP_STRUCT__entry_btrfs(
liubo1abe9b82011-03-24 11:18:59 +0000597 __field( int, wait )
598 ),
599
Jeff Mahoneybc074522016-06-09 17:27:55 -0400600 TP_fast_assign_btrfs(fs_info,
liubo1abe9b82011-03-24 11:18:59 +0000601 __entry->wait = wait;
602 ),
603
Jeff Mahoneybc074522016-06-09 17:27:55 -0400604 TP_printk_btrfs("wait = %d", __entry->wait)
liubo1abe9b82011-03-24 11:18:59 +0000605);
606
Josef Bacikc83f8ef2016-03-25 13:25:52 -0400607TRACE_EVENT(btrfs_add_block_group,
608
609 TP_PROTO(struct btrfs_fs_info *fs_info,
610 struct btrfs_block_group_cache *block_group, int create),
611
612 TP_ARGS(fs_info, block_group, create),
613
614 TP_STRUCT__entry(
615 __array( u8, fsid, BTRFS_UUID_SIZE )
616 __field( u64, offset )
617 __field( u64, size )
618 __field( u64, flags )
619 __field( u64, bytes_used )
620 __field( u64, bytes_super )
621 __field( int, create )
622 ),
623
624 TP_fast_assign(
625 memcpy(__entry->fsid, fs_info->fsid, BTRFS_UUID_SIZE);
626 __entry->offset = block_group->key.objectid;
627 __entry->size = block_group->key.offset;
628 __entry->flags = block_group->flags;
629 __entry->bytes_used =
630 btrfs_block_group_used(&block_group->item);
631 __entry->bytes_super = block_group->bytes_super;
632 __entry->create = create;
633 ),
634
David Sterba562a7a02017-01-06 15:51:36 +0100635 TP_printk("%pU: block_group offset=%llu size=%llu "
636 "flags=%llu(%s) bytes_used=%llu bytes_super=%llu "
637 "create=%d", __entry->fsid,
Josef Bacikc83f8ef2016-03-25 13:25:52 -0400638 (unsigned long long)__entry->offset,
639 (unsigned long long)__entry->size,
640 (unsigned long long)__entry->flags,
641 __print_flags((unsigned long)__entry->flags, "|",
642 BTRFS_GROUP_FLAGS),
643 (unsigned long long)__entry->bytes_used,
644 (unsigned long long)__entry->bytes_super, __entry->create)
645);
646
liubo1abe9b82011-03-24 11:18:59 +0000647#define show_ref_action(action) \
648 __print_symbolic(action, \
649 { BTRFS_ADD_DELAYED_REF, "ADD_DELAYED_REF" }, \
650 { BTRFS_DROP_DELAYED_REF, "DROP_DELAYED_REF" }, \
651 { BTRFS_ADD_DELAYED_EXTENT, "ADD_DELAYED_EXTENT" }, \
652 { BTRFS_UPDATE_DELAYED_HEAD, "UPDATE_DELAYED_HEAD" })
653
654
Liu Bo599c75e2013-07-16 19:03:36 +0800655DECLARE_EVENT_CLASS(btrfs_delayed_tree_ref,
liubo1abe9b82011-03-24 11:18:59 +0000656
Jeff Mahoneybc074522016-06-09 17:27:55 -0400657 TP_PROTO(struct btrfs_fs_info *fs_info,
658 struct btrfs_delayed_ref_node *ref,
liubo1abe9b82011-03-24 11:18:59 +0000659 struct btrfs_delayed_tree_ref *full_ref,
660 int action),
661
Jeff Mahoneybc074522016-06-09 17:27:55 -0400662 TP_ARGS(fs_info, ref, full_ref, action),
liubo1abe9b82011-03-24 11:18:59 +0000663
Jeff Mahoneybc074522016-06-09 17:27:55 -0400664 TP_STRUCT__entry_btrfs(
liubo1abe9b82011-03-24 11:18:59 +0000665 __field( u64, bytenr )
666 __field( u64, num_bytes )
667 __field( int, action )
668 __field( u64, parent )
669 __field( u64, ref_root )
670 __field( int, level )
671 __field( int, type )
Liu Bodea7d762012-09-07 20:01:27 -0600672 __field( u64, seq )
liubo1abe9b82011-03-24 11:18:59 +0000673 ),
674
Jeff Mahoneybc074522016-06-09 17:27:55 -0400675 TP_fast_assign_btrfs(fs_info,
liubo1abe9b82011-03-24 11:18:59 +0000676 __entry->bytenr = ref->bytenr;
677 __entry->num_bytes = ref->num_bytes;
678 __entry->action = action;
679 __entry->parent = full_ref->parent;
680 __entry->ref_root = full_ref->root;
681 __entry->level = full_ref->level;
682 __entry->type = ref->type;
Liu Bodea7d762012-09-07 20:01:27 -0600683 __entry->seq = ref->seq;
liubo1abe9b82011-03-24 11:18:59 +0000684 ),
685
David Sterba562a7a02017-01-06 15:51:36 +0100686 TP_printk_btrfs("bytenr=%llu num_bytes=%llu action=%s "
687 "parent=%llu(%s) ref_root=%llu(%s) level=%d "
688 "type=%s seq=%llu",
liubo1abe9b82011-03-24 11:18:59 +0000689 (unsigned long long)__entry->bytenr,
690 (unsigned long long)__entry->num_bytes,
691 show_ref_action(__entry->action),
692 show_root_type(__entry->parent),
693 show_root_type(__entry->ref_root),
Liu Bodea7d762012-09-07 20:01:27 -0600694 __entry->level, show_ref_type(__entry->type),
695 (unsigned long long)__entry->seq)
liubo1abe9b82011-03-24 11:18:59 +0000696);
697
Liu Bo599c75e2013-07-16 19:03:36 +0800698DEFINE_EVENT(btrfs_delayed_tree_ref, add_delayed_tree_ref,
699
Jeff Mahoneybc074522016-06-09 17:27:55 -0400700 TP_PROTO(struct btrfs_fs_info *fs_info,
701 struct btrfs_delayed_ref_node *ref,
Liu Bo599c75e2013-07-16 19:03:36 +0800702 struct btrfs_delayed_tree_ref *full_ref,
703 int action),
704
Jeff Mahoneybc074522016-06-09 17:27:55 -0400705 TP_ARGS(fs_info, ref, full_ref, action)
Liu Bo599c75e2013-07-16 19:03:36 +0800706);
707
708DEFINE_EVENT(btrfs_delayed_tree_ref, run_delayed_tree_ref,
709
Jeff Mahoneybc074522016-06-09 17:27:55 -0400710 TP_PROTO(struct btrfs_fs_info *fs_info,
711 struct btrfs_delayed_ref_node *ref,
Liu Bo599c75e2013-07-16 19:03:36 +0800712 struct btrfs_delayed_tree_ref *full_ref,
713 int action),
714
Jeff Mahoneybc074522016-06-09 17:27:55 -0400715 TP_ARGS(fs_info, ref, full_ref, action)
Liu Bo599c75e2013-07-16 19:03:36 +0800716);
717
718DECLARE_EVENT_CLASS(btrfs_delayed_data_ref,
liubo1abe9b82011-03-24 11:18:59 +0000719
Jeff Mahoneybc074522016-06-09 17:27:55 -0400720 TP_PROTO(struct btrfs_fs_info *fs_info,
721 struct btrfs_delayed_ref_node *ref,
liubo1abe9b82011-03-24 11:18:59 +0000722 struct btrfs_delayed_data_ref *full_ref,
723 int action),
724
Jeff Mahoneybc074522016-06-09 17:27:55 -0400725 TP_ARGS(fs_info, ref, full_ref, action),
liubo1abe9b82011-03-24 11:18:59 +0000726
Jeff Mahoneybc074522016-06-09 17:27:55 -0400727 TP_STRUCT__entry_btrfs(
liubo1abe9b82011-03-24 11:18:59 +0000728 __field( u64, bytenr )
729 __field( u64, num_bytes )
730 __field( int, action )
731 __field( u64, parent )
732 __field( u64, ref_root )
733 __field( u64, owner )
734 __field( u64, offset )
735 __field( int, type )
Liu Bodea7d762012-09-07 20:01:27 -0600736 __field( u64, seq )
liubo1abe9b82011-03-24 11:18:59 +0000737 ),
738
Jeff Mahoneybc074522016-06-09 17:27:55 -0400739 TP_fast_assign_btrfs(fs_info,
liubo1abe9b82011-03-24 11:18:59 +0000740 __entry->bytenr = ref->bytenr;
741 __entry->num_bytes = ref->num_bytes;
742 __entry->action = action;
743 __entry->parent = full_ref->parent;
744 __entry->ref_root = full_ref->root;
745 __entry->owner = full_ref->objectid;
746 __entry->offset = full_ref->offset;
747 __entry->type = ref->type;
Liu Bodea7d762012-09-07 20:01:27 -0600748 __entry->seq = ref->seq;
liubo1abe9b82011-03-24 11:18:59 +0000749 ),
750
David Sterba562a7a02017-01-06 15:51:36 +0100751 TP_printk_btrfs("bytenr=%llu num_bytes=%llu action=%s "
752 "parent=%llu(%s) ref_root=%llu(%s) owner=%llu "
753 "offset=%llu type=%s seq=%llu",
liubo1abe9b82011-03-24 11:18:59 +0000754 (unsigned long long)__entry->bytenr,
755 (unsigned long long)__entry->num_bytes,
756 show_ref_action(__entry->action),
757 show_root_type(__entry->parent),
758 show_root_type(__entry->ref_root),
759 (unsigned long long)__entry->owner,
760 (unsigned long long)__entry->offset,
Liu Bodea7d762012-09-07 20:01:27 -0600761 show_ref_type(__entry->type),
762 (unsigned long long)__entry->seq)
liubo1abe9b82011-03-24 11:18:59 +0000763);
764
Liu Bo599c75e2013-07-16 19:03:36 +0800765DEFINE_EVENT(btrfs_delayed_data_ref, add_delayed_data_ref,
766
Jeff Mahoneybc074522016-06-09 17:27:55 -0400767 TP_PROTO(struct btrfs_fs_info *fs_info,
768 struct btrfs_delayed_ref_node *ref,
Liu Bo599c75e2013-07-16 19:03:36 +0800769 struct btrfs_delayed_data_ref *full_ref,
770 int action),
771
Jeff Mahoneybc074522016-06-09 17:27:55 -0400772 TP_ARGS(fs_info, ref, full_ref, action)
Liu Bo599c75e2013-07-16 19:03:36 +0800773);
774
775DEFINE_EVENT(btrfs_delayed_data_ref, run_delayed_data_ref,
776
Jeff Mahoneybc074522016-06-09 17:27:55 -0400777 TP_PROTO(struct btrfs_fs_info *fs_info,
778 struct btrfs_delayed_ref_node *ref,
Liu Bo599c75e2013-07-16 19:03:36 +0800779 struct btrfs_delayed_data_ref *full_ref,
780 int action),
781
Jeff Mahoneybc074522016-06-09 17:27:55 -0400782 TP_ARGS(fs_info, ref, full_ref, action)
Liu Bo599c75e2013-07-16 19:03:36 +0800783);
784
785DECLARE_EVENT_CLASS(btrfs_delayed_ref_head,
liubo1abe9b82011-03-24 11:18:59 +0000786
Jeff Mahoneybc074522016-06-09 17:27:55 -0400787 TP_PROTO(struct btrfs_fs_info *fs_info,
788 struct btrfs_delayed_ref_node *ref,
liubo1abe9b82011-03-24 11:18:59 +0000789 struct btrfs_delayed_ref_head *head_ref,
790 int action),
791
Jeff Mahoneybc074522016-06-09 17:27:55 -0400792 TP_ARGS(fs_info, ref, head_ref, action),
liubo1abe9b82011-03-24 11:18:59 +0000793
Jeff Mahoneybc074522016-06-09 17:27:55 -0400794 TP_STRUCT__entry_btrfs(
liubo1abe9b82011-03-24 11:18:59 +0000795 __field( u64, bytenr )
796 __field( u64, num_bytes )
797 __field( int, action )
798 __field( int, is_data )
799 ),
800
Jeff Mahoneybc074522016-06-09 17:27:55 -0400801 TP_fast_assign_btrfs(fs_info,
liubo1abe9b82011-03-24 11:18:59 +0000802 __entry->bytenr = ref->bytenr;
803 __entry->num_bytes = ref->num_bytes;
804 __entry->action = action;
805 __entry->is_data = head_ref->is_data;
806 ),
807
David Sterba562a7a02017-01-06 15:51:36 +0100808 TP_printk_btrfs("bytenr=%llu num_bytes=%llu action=%s is_data=%d",
liubo1abe9b82011-03-24 11:18:59 +0000809 (unsigned long long)__entry->bytenr,
810 (unsigned long long)__entry->num_bytes,
811 show_ref_action(__entry->action),
812 __entry->is_data)
813);
814
Liu Bo599c75e2013-07-16 19:03:36 +0800815DEFINE_EVENT(btrfs_delayed_ref_head, add_delayed_ref_head,
816
Jeff Mahoneybc074522016-06-09 17:27:55 -0400817 TP_PROTO(struct btrfs_fs_info *fs_info,
818 struct btrfs_delayed_ref_node *ref,
Liu Bo599c75e2013-07-16 19:03:36 +0800819 struct btrfs_delayed_ref_head *head_ref,
820 int action),
821
Jeff Mahoneybc074522016-06-09 17:27:55 -0400822 TP_ARGS(fs_info, ref, head_ref, action)
Liu Bo599c75e2013-07-16 19:03:36 +0800823);
824
825DEFINE_EVENT(btrfs_delayed_ref_head, run_delayed_ref_head,
826
Jeff Mahoneybc074522016-06-09 17:27:55 -0400827 TP_PROTO(struct btrfs_fs_info *fs_info,
828 struct btrfs_delayed_ref_node *ref,
Liu Bo599c75e2013-07-16 19:03:36 +0800829 struct btrfs_delayed_ref_head *head_ref,
830 int action),
831
Jeff Mahoneybc074522016-06-09 17:27:55 -0400832 TP_ARGS(fs_info, ref, head_ref, action)
Liu Bo599c75e2013-07-16 19:03:36 +0800833);
834
liubo1abe9b82011-03-24 11:18:59 +0000835#define show_chunk_type(type) \
836 __print_flags(type, "|", \
837 { BTRFS_BLOCK_GROUP_DATA, "DATA" }, \
838 { BTRFS_BLOCK_GROUP_SYSTEM, "SYSTEM"}, \
839 { BTRFS_BLOCK_GROUP_METADATA, "METADATA"}, \
840 { BTRFS_BLOCK_GROUP_RAID0, "RAID0" }, \
841 { BTRFS_BLOCK_GROUP_RAID1, "RAID1" }, \
842 { BTRFS_BLOCK_GROUP_DUP, "DUP" }, \
Liu Boe112e2b2013-05-26 13:50:28 +0000843 { BTRFS_BLOCK_GROUP_RAID10, "RAID10"}, \
844 { BTRFS_BLOCK_GROUP_RAID5, "RAID5" }, \
845 { BTRFS_BLOCK_GROUP_RAID6, "RAID6" })
liubo1abe9b82011-03-24 11:18:59 +0000846
847DECLARE_EVENT_CLASS(btrfs__chunk,
848
Jeff Mahoney6bccf3a2016-06-21 21:16:51 -0400849 TP_PROTO(struct btrfs_fs_info *fs_info, struct map_lookup *map,
liubo1abe9b82011-03-24 11:18:59 +0000850 u64 offset, u64 size),
851
Jeff Mahoney6bccf3a2016-06-21 21:16:51 -0400852 TP_ARGS(fs_info, map, offset, size),
liubo1abe9b82011-03-24 11:18:59 +0000853
Jeff Mahoneybc074522016-06-09 17:27:55 -0400854 TP_STRUCT__entry_btrfs(
liubo1abe9b82011-03-24 11:18:59 +0000855 __field( int, num_stripes )
856 __field( u64, type )
857 __field( int, sub_stripes )
858 __field( u64, offset )
859 __field( u64, size )
860 __field( u64, root_objectid )
861 ),
862
Jeff Mahoney6bccf3a2016-06-21 21:16:51 -0400863 TP_fast_assign_btrfs(fs_info,
liubo1abe9b82011-03-24 11:18:59 +0000864 __entry->num_stripes = map->num_stripes;
865 __entry->type = map->type;
866 __entry->sub_stripes = map->sub_stripes;
867 __entry->offset = offset;
868 __entry->size = size;
Jeff Mahoney6bccf3a2016-06-21 21:16:51 -0400869 __entry->root_objectid = fs_info->chunk_root->root_key.objectid;
liubo1abe9b82011-03-24 11:18:59 +0000870 ),
871
David Sterba562a7a02017-01-06 15:51:36 +0100872 TP_printk_btrfs("root=%llu(%s) offset=%llu size=%llu "
873 "num_stripes=%d sub_stripes=%d type=%s",
liubo1abe9b82011-03-24 11:18:59 +0000874 show_root_type(__entry->root_objectid),
875 (unsigned long long)__entry->offset,
876 (unsigned long long)__entry->size,
877 __entry->num_stripes, __entry->sub_stripes,
878 show_chunk_type(__entry->type))
879);
880
881DEFINE_EVENT(btrfs__chunk, btrfs_chunk_alloc,
882
Jeff Mahoney6bccf3a2016-06-21 21:16:51 -0400883 TP_PROTO(struct btrfs_fs_info *fs_info, struct map_lookup *map,
liubo1abe9b82011-03-24 11:18:59 +0000884 u64 offset, u64 size),
885
Jeff Mahoney6bccf3a2016-06-21 21:16:51 -0400886 TP_ARGS(fs_info, map, offset, size)
liubo1abe9b82011-03-24 11:18:59 +0000887);
888
889DEFINE_EVENT(btrfs__chunk, btrfs_chunk_free,
890
Jeff Mahoney6bccf3a2016-06-21 21:16:51 -0400891 TP_PROTO(struct btrfs_fs_info *fs_info, struct map_lookup *map,
liubo1abe9b82011-03-24 11:18:59 +0000892 u64 offset, u64 size),
893
Jeff Mahoney6bccf3a2016-06-21 21:16:51 -0400894 TP_ARGS(fs_info, map, offset, size)
liubo1abe9b82011-03-24 11:18:59 +0000895);
896
897TRACE_EVENT(btrfs_cow_block,
898
899 TP_PROTO(struct btrfs_root *root, struct extent_buffer *buf,
900 struct extent_buffer *cow),
901
902 TP_ARGS(root, buf, cow),
903
Jeff Mahoneybc074522016-06-09 17:27:55 -0400904 TP_STRUCT__entry_btrfs(
liubo1abe9b82011-03-24 11:18:59 +0000905 __field( u64, root_objectid )
906 __field( u64, buf_start )
907 __field( int, refs )
908 __field( u64, cow_start )
909 __field( int, buf_level )
910 __field( int, cow_level )
911 ),
912
Jeff Mahoneybc074522016-06-09 17:27:55 -0400913 TP_fast_assign_btrfs(root->fs_info,
liubo1abe9b82011-03-24 11:18:59 +0000914 __entry->root_objectid = root->root_key.objectid;
915 __entry->buf_start = buf->start;
916 __entry->refs = atomic_read(&buf->refs);
917 __entry->cow_start = cow->start;
918 __entry->buf_level = btrfs_header_level(buf);
919 __entry->cow_level = btrfs_header_level(cow);
920 ),
921
David Sterba562a7a02017-01-06 15:51:36 +0100922 TP_printk_btrfs("root=%llu(%s) refs=%d orig_buf=%llu "
923 "(orig_level=%d) cow_buf=%llu (cow_level=%d)",
liubo1abe9b82011-03-24 11:18:59 +0000924 show_root_type(__entry->root_objectid),
925 __entry->refs,
926 (unsigned long long)__entry->buf_start,
927 __entry->buf_level,
928 (unsigned long long)__entry->cow_start,
929 __entry->cow_level)
930);
931
Josef Bacik8c2a3ca2012-01-10 10:31:31 -0500932TRACE_EVENT(btrfs_space_reservation,
933
934 TP_PROTO(struct btrfs_fs_info *fs_info, char *type, u64 val,
935 u64 bytes, int reserve),
936
937 TP_ARGS(fs_info, type, val, bytes, reserve),
938
Jeff Mahoneybc074522016-06-09 17:27:55 -0400939 TP_STRUCT__entry_btrfs(
Josef Bacik8c2a3ca2012-01-10 10:31:31 -0500940 __string( type, type )
941 __field( u64, val )
942 __field( u64, bytes )
943 __field( int, reserve )
944 ),
945
Jeff Mahoneybc074522016-06-09 17:27:55 -0400946 TP_fast_assign_btrfs(fs_info,
Josef Bacik8c2a3ca2012-01-10 10:31:31 -0500947 __assign_str(type, type);
948 __entry->val = val;
949 __entry->bytes = bytes;
950 __entry->reserve = reserve;
951 ),
952
Jeff Mahoneybc074522016-06-09 17:27:55 -0400953 TP_printk_btrfs("%s: %Lu %s %Lu", __get_str(type), __entry->val,
954 __entry->reserve ? "reserve" : "release",
955 __entry->bytes)
Josef Bacik8c2a3ca2012-01-10 10:31:31 -0500956);
957
Josef Bacikf376df22016-03-25 13:25:56 -0400958#define show_flush_action(action) \
959 __print_symbolic(action, \
960 { BTRFS_RESERVE_NO_FLUSH, "BTRFS_RESERVE_NO_FLUSH"}, \
961 { BTRFS_RESERVE_FLUSH_LIMIT, "BTRFS_RESERVE_FLUSH_LIMIT"}, \
962 { BTRFS_RESERVE_FLUSH_ALL, "BTRFS_RESERVE_FLUSH_ALL"})
963
964TRACE_EVENT(btrfs_trigger_flush,
965
966 TP_PROTO(struct btrfs_fs_info *fs_info, u64 flags, u64 bytes,
967 int flush, char *reason),
968
969 TP_ARGS(fs_info, flags, bytes, flush, reason),
970
971 TP_STRUCT__entry(
972 __array( u8, fsid, BTRFS_UUID_SIZE )
973 __field( u64, flags )
974 __field( u64, bytes )
975 __field( int, flush )
976 __string( reason, reason )
977 ),
978
979 TP_fast_assign(
980 memcpy(__entry->fsid, fs_info->fsid, BTRFS_UUID_SIZE);
981 __entry->flags = flags;
982 __entry->bytes = bytes;
983 __entry->flush = flush;
984 __assign_str(reason, reason)
985 ),
986
David Sterba562a7a02017-01-06 15:51:36 +0100987 TP_printk("%pU: %s: flush=%d(%s) flags=%llu(%s) bytes=%llu",
Josef Bacikf376df22016-03-25 13:25:56 -0400988 __entry->fsid, __get_str(reason), __entry->flush,
989 show_flush_action(__entry->flush),
990 (unsigned long long)__entry->flags,
991 __print_flags((unsigned long)__entry->flags, "|",
992 BTRFS_GROUP_FLAGS),
993 (unsigned long long)__entry->bytes)
994);
995
996#define show_flush_state(state) \
997 __print_symbolic(state, \
998 { FLUSH_DELAYED_ITEMS_NR, "FLUSH_DELAYED_ITEMS_NR"}, \
999 { FLUSH_DELAYED_ITEMS, "FLUSH_DELAYED_ITEMS"}, \
1000 { FLUSH_DELALLOC, "FLUSH_DELALLOC"}, \
1001 { FLUSH_DELALLOC_WAIT, "FLUSH_DELALLOC_WAIT"}, \
1002 { ALLOC_CHUNK, "ALLOC_CHUNK"}, \
1003 { COMMIT_TRANS, "COMMIT_TRANS"})
1004
1005TRACE_EVENT(btrfs_flush_space,
1006
1007 TP_PROTO(struct btrfs_fs_info *fs_info, u64 flags, u64 num_bytes,
1008 u64 orig_bytes, int state, int ret),
1009
1010 TP_ARGS(fs_info, flags, num_bytes, orig_bytes, state, ret),
1011
1012 TP_STRUCT__entry(
1013 __array( u8, fsid, BTRFS_UUID_SIZE )
1014 __field( u64, flags )
1015 __field( u64, num_bytes )
1016 __field( u64, orig_bytes )
1017 __field( int, state )
1018 __field( int, ret )
1019 ),
1020
1021 TP_fast_assign(
1022 memcpy(__entry->fsid, fs_info->fsid, BTRFS_UUID_SIZE);
1023 __entry->flags = flags;
1024 __entry->num_bytes = num_bytes;
1025 __entry->orig_bytes = orig_bytes;
1026 __entry->state = state;
1027 __entry->ret = ret;
1028 ),
1029
David Sterba562a7a02017-01-06 15:51:36 +01001030 TP_printk("%pU: state=%d(%s) flags=%llu(%s) num_bytes=%llu "
1031 "orig_bytes=%llu ret=%d", __entry->fsid, __entry->state,
Josef Bacikf376df22016-03-25 13:25:56 -04001032 show_flush_state(__entry->state),
1033 (unsigned long long)__entry->flags,
1034 __print_flags((unsigned long)__entry->flags, "|",
1035 BTRFS_GROUP_FLAGS),
1036 (unsigned long long)__entry->num_bytes,
1037 (unsigned long long)__entry->orig_bytes, __entry->ret)
1038);
1039
liubo1abe9b82011-03-24 11:18:59 +00001040DECLARE_EVENT_CLASS(btrfs__reserved_extent,
1041
Jeff Mahoney71ff6432016-09-06 16:00:42 -04001042 TP_PROTO(struct btrfs_fs_info *fs_info, u64 start, u64 len),
liubo1abe9b82011-03-24 11:18:59 +00001043
Jeff Mahoney71ff6432016-09-06 16:00:42 -04001044 TP_ARGS(fs_info, start, len),
liubo1abe9b82011-03-24 11:18:59 +00001045
Jeff Mahoneybc074522016-06-09 17:27:55 -04001046 TP_STRUCT__entry_btrfs(
Jeff Mahoneybc074522016-06-09 17:27:55 -04001047 __field( u64, start )
1048 __field( u64, len )
liubo1abe9b82011-03-24 11:18:59 +00001049 ),
1050
Jeff Mahoney71ff6432016-09-06 16:00:42 -04001051 TP_fast_assign_btrfs(fs_info,
liubo1abe9b82011-03-24 11:18:59 +00001052 __entry->start = start;
1053 __entry->len = len;
1054 ),
1055
David Sterba562a7a02017-01-06 15:51:36 +01001056 TP_printk_btrfs("root=%llu(%s) start=%llu len=%llu",
Jeff Mahoney71ff6432016-09-06 16:00:42 -04001057 show_root_type(BTRFS_EXTENT_TREE_OBJECTID),
liubo1abe9b82011-03-24 11:18:59 +00001058 (unsigned long long)__entry->start,
1059 (unsigned long long)__entry->len)
1060);
1061
1062DEFINE_EVENT(btrfs__reserved_extent, btrfs_reserved_extent_alloc,
1063
Jeff Mahoney71ff6432016-09-06 16:00:42 -04001064 TP_PROTO(struct btrfs_fs_info *fs_info, u64 start, u64 len),
liubo1abe9b82011-03-24 11:18:59 +00001065
Jeff Mahoney71ff6432016-09-06 16:00:42 -04001066 TP_ARGS(fs_info, start, len)
liubo1abe9b82011-03-24 11:18:59 +00001067);
1068
1069DEFINE_EVENT(btrfs__reserved_extent, btrfs_reserved_extent_free,
1070
Jeff Mahoney71ff6432016-09-06 16:00:42 -04001071 TP_PROTO(struct btrfs_fs_info *fs_info, u64 start, u64 len),
liubo1abe9b82011-03-24 11:18:59 +00001072
Jeff Mahoney71ff6432016-09-06 16:00:42 -04001073 TP_ARGS(fs_info, start, len)
liubo1abe9b82011-03-24 11:18:59 +00001074);
1075
Josef Bacik3f7de032011-11-10 08:29:20 -05001076TRACE_EVENT(find_free_extent,
1077
Jeff Mahoney71ff6432016-09-06 16:00:42 -04001078 TP_PROTO(struct btrfs_fs_info *fs_info, u64 num_bytes, u64 empty_size,
Josef Bacik3f7de032011-11-10 08:29:20 -05001079 u64 data),
1080
Jeff Mahoney71ff6432016-09-06 16:00:42 -04001081 TP_ARGS(fs_info, num_bytes, empty_size, data),
Josef Bacik3f7de032011-11-10 08:29:20 -05001082
Jeff Mahoneybc074522016-06-09 17:27:55 -04001083 TP_STRUCT__entry_btrfs(
Josef Bacik3f7de032011-11-10 08:29:20 -05001084 __field( u64, num_bytes )
1085 __field( u64, empty_size )
1086 __field( u64, data )
1087 ),
1088
Jeff Mahoney71ff6432016-09-06 16:00:42 -04001089 TP_fast_assign_btrfs(fs_info,
Josef Bacik3f7de032011-11-10 08:29:20 -05001090 __entry->num_bytes = num_bytes;
1091 __entry->empty_size = empty_size;
1092 __entry->data = data;
1093 ),
1094
David Sterba562a7a02017-01-06 15:51:36 +01001095 TP_printk_btrfs("root=%Lu(%s) len=%Lu empty_size=%Lu flags=%Lu(%s)",
Jeff Mahoney71ff6432016-09-06 16:00:42 -04001096 show_root_type(BTRFS_EXTENT_TREE_OBJECTID),
Josef Bacik3f7de032011-11-10 08:29:20 -05001097 __entry->num_bytes, __entry->empty_size, __entry->data,
1098 __print_flags((unsigned long)__entry->data, "|",
1099 BTRFS_GROUP_FLAGS))
1100);
1101
1102DECLARE_EVENT_CLASS(btrfs__reserve_extent,
1103
Jeff Mahoney71ff6432016-09-06 16:00:42 -04001104 TP_PROTO(struct btrfs_fs_info *fs_info,
Josef Bacik3f7de032011-11-10 08:29:20 -05001105 struct btrfs_block_group_cache *block_group, u64 start,
1106 u64 len),
1107
Jeff Mahoney71ff6432016-09-06 16:00:42 -04001108 TP_ARGS(fs_info, block_group, start, len),
Josef Bacik3f7de032011-11-10 08:29:20 -05001109
Jeff Mahoneybc074522016-06-09 17:27:55 -04001110 TP_STRUCT__entry_btrfs(
Josef Bacik3f7de032011-11-10 08:29:20 -05001111 __field( u64, bg_objectid )
1112 __field( u64, flags )
1113 __field( u64, start )
1114 __field( u64, len )
1115 ),
1116
Jeff Mahoney71ff6432016-09-06 16:00:42 -04001117 TP_fast_assign_btrfs(fs_info,
Josef Bacik3f7de032011-11-10 08:29:20 -05001118 __entry->bg_objectid = block_group->key.objectid;
1119 __entry->flags = block_group->flags;
1120 __entry->start = start;
1121 __entry->len = len;
1122 ),
1123
David Sterba562a7a02017-01-06 15:51:36 +01001124 TP_printk_btrfs("root=%Lu(%s) block_group=%Lu flags=%Lu(%s) "
1125 "start=%Lu len=%Lu",
Jeff Mahoney71ff6432016-09-06 16:00:42 -04001126 show_root_type(BTRFS_EXTENT_TREE_OBJECTID),
1127 __entry->bg_objectid,
Josef Bacik3f7de032011-11-10 08:29:20 -05001128 __entry->flags, __print_flags((unsigned long)__entry->flags,
1129 "|", BTRFS_GROUP_FLAGS),
1130 __entry->start, __entry->len)
1131);
1132
1133DEFINE_EVENT(btrfs__reserve_extent, btrfs_reserve_extent,
1134
Jeff Mahoney71ff6432016-09-06 16:00:42 -04001135 TP_PROTO(struct btrfs_fs_info *fs_info,
Josef Bacik3f7de032011-11-10 08:29:20 -05001136 struct btrfs_block_group_cache *block_group, u64 start,
1137 u64 len),
1138
Jeff Mahoney71ff6432016-09-06 16:00:42 -04001139 TP_ARGS(fs_info, block_group, start, len)
Josef Bacik3f7de032011-11-10 08:29:20 -05001140);
1141
1142DEFINE_EVENT(btrfs__reserve_extent, btrfs_reserve_extent_cluster,
1143
Jeff Mahoney71ff6432016-09-06 16:00:42 -04001144 TP_PROTO(struct btrfs_fs_info *fs_info,
Josef Bacik3f7de032011-11-10 08:29:20 -05001145 struct btrfs_block_group_cache *block_group, u64 start,
1146 u64 len),
1147
Jeff Mahoney71ff6432016-09-06 16:00:42 -04001148 TP_ARGS(fs_info, block_group, start, len)
Josef Bacik3f7de032011-11-10 08:29:20 -05001149);
1150
1151TRACE_EVENT(btrfs_find_cluster,
1152
1153 TP_PROTO(struct btrfs_block_group_cache *block_group, u64 start,
1154 u64 bytes, u64 empty_size, u64 min_bytes),
1155
1156 TP_ARGS(block_group, start, bytes, empty_size, min_bytes),
1157
Jeff Mahoneybc074522016-06-09 17:27:55 -04001158 TP_STRUCT__entry_btrfs(
Josef Bacik3f7de032011-11-10 08:29:20 -05001159 __field( u64, bg_objectid )
1160 __field( u64, flags )
1161 __field( u64, start )
1162 __field( u64, bytes )
1163 __field( u64, empty_size )
1164 __field( u64, min_bytes )
1165 ),
1166
Jeff Mahoneybc074522016-06-09 17:27:55 -04001167 TP_fast_assign_btrfs(block_group->fs_info,
Josef Bacik3f7de032011-11-10 08:29:20 -05001168 __entry->bg_objectid = block_group->key.objectid;
1169 __entry->flags = block_group->flags;
1170 __entry->start = start;
1171 __entry->bytes = bytes;
1172 __entry->empty_size = empty_size;
1173 __entry->min_bytes = min_bytes;
1174 ),
1175
David Sterba562a7a02017-01-06 15:51:36 +01001176 TP_printk_btrfs("block_group=%Lu flags=%Lu(%s) start=%Lu len=%Lu "
1177 "empty_size=%Lu min_bytes=%Lu", __entry->bg_objectid,
Josef Bacik3f7de032011-11-10 08:29:20 -05001178 __entry->flags,
1179 __print_flags((unsigned long)__entry->flags, "|",
1180 BTRFS_GROUP_FLAGS), __entry->start,
1181 __entry->bytes, __entry->empty_size, __entry->min_bytes)
1182);
1183
1184TRACE_EVENT(btrfs_failed_cluster_setup,
1185
1186 TP_PROTO(struct btrfs_block_group_cache *block_group),
1187
1188 TP_ARGS(block_group),
1189
Jeff Mahoneybc074522016-06-09 17:27:55 -04001190 TP_STRUCT__entry_btrfs(
Josef Bacik3f7de032011-11-10 08:29:20 -05001191 __field( u64, bg_objectid )
1192 ),
1193
Jeff Mahoneybc074522016-06-09 17:27:55 -04001194 TP_fast_assign_btrfs(block_group->fs_info,
Josef Bacik3f7de032011-11-10 08:29:20 -05001195 __entry->bg_objectid = block_group->key.objectid;
1196 ),
1197
David Sterba562a7a02017-01-06 15:51:36 +01001198 TP_printk_btrfs("block_group=%Lu", __entry->bg_objectid)
Josef Bacik3f7de032011-11-10 08:29:20 -05001199);
1200
1201TRACE_EVENT(btrfs_setup_cluster,
1202
1203 TP_PROTO(struct btrfs_block_group_cache *block_group,
1204 struct btrfs_free_cluster *cluster, u64 size, int bitmap),
1205
1206 TP_ARGS(block_group, cluster, size, bitmap),
1207
Jeff Mahoneybc074522016-06-09 17:27:55 -04001208 TP_STRUCT__entry_btrfs(
Josef Bacik3f7de032011-11-10 08:29:20 -05001209 __field( u64, bg_objectid )
1210 __field( u64, flags )
1211 __field( u64, start )
1212 __field( u64, max_size )
1213 __field( u64, size )
1214 __field( int, bitmap )
1215 ),
1216
Jeff Mahoneybc074522016-06-09 17:27:55 -04001217 TP_fast_assign_btrfs(block_group->fs_info,
Josef Bacik3f7de032011-11-10 08:29:20 -05001218 __entry->bg_objectid = block_group->key.objectid;
1219 __entry->flags = block_group->flags;
1220 __entry->start = cluster->window_start;
1221 __entry->max_size = cluster->max_size;
1222 __entry->size = size;
1223 __entry->bitmap = bitmap;
1224 ),
1225
David Sterba562a7a02017-01-06 15:51:36 +01001226 TP_printk_btrfs("block_group=%Lu flags=%Lu(%s) window_start=%Lu "
1227 "size=%Lu max_size=%Lu bitmap=%d",
Josef Bacik3f7de032011-11-10 08:29:20 -05001228 __entry->bg_objectid,
1229 __entry->flags,
1230 __print_flags((unsigned long)__entry->flags, "|",
1231 BTRFS_GROUP_FLAGS), __entry->start,
1232 __entry->size, __entry->max_size, __entry->bitmap)
1233);
1234
Jeff Mahoney143bede2012-03-01 14:56:26 +01001235struct extent_state;
1236TRACE_EVENT(alloc_extent_state,
1237
1238 TP_PROTO(struct extent_state *state, gfp_t mask, unsigned long IP),
1239
1240 TP_ARGS(state, mask, IP),
1241
1242 TP_STRUCT__entry(
1243 __field(struct extent_state *, state)
1244 __field(gfp_t, mask)
1245 __field(unsigned long, ip)
1246 ),
1247
1248 TP_fast_assign(
1249 __entry->state = state,
1250 __entry->mask = mask,
1251 __entry->ip = IP
1252 ),
1253
David Sterba562a7a02017-01-06 15:51:36 +01001254 TP_printk("state=%p mask=%s caller=%pS", __entry->state,
Jeff Mahoney143bede2012-03-01 14:56:26 +01001255 show_gfp_flags(__entry->mask), (void *)__entry->ip)
1256);
1257
1258TRACE_EVENT(free_extent_state,
1259
1260 TP_PROTO(struct extent_state *state, unsigned long IP),
1261
1262 TP_ARGS(state, IP),
1263
1264 TP_STRUCT__entry(
1265 __field(struct extent_state *, state)
1266 __field(unsigned long, ip)
1267 ),
1268
1269 TP_fast_assign(
1270 __entry->state = state,
1271 __entry->ip = IP
1272 ),
1273
David Sterba562a7a02017-01-06 15:51:36 +01001274 TP_printk("state=%p caller=%pS", __entry->state,
Jeff Mahoney143bede2012-03-01 14:56:26 +01001275 (void *)__entry->ip)
1276);
1277
Qu Wenruo52483bc2014-03-06 04:19:50 +00001278DECLARE_EVENT_CLASS(btrfs__work,
1279
1280 TP_PROTO(struct btrfs_work *work),
1281
1282 TP_ARGS(work),
1283
Jeff Mahoneybc074522016-06-09 17:27:55 -04001284 TP_STRUCT__entry_btrfs(
Qu Wenruo52483bc2014-03-06 04:19:50 +00001285 __field( void *, work )
1286 __field( void *, wq )
1287 __field( void *, func )
1288 __field( void *, ordered_func )
1289 __field( void *, ordered_free )
Liu Bob38a6252014-08-12 16:33:17 +08001290 __field( void *, normal_work )
Qu Wenruo52483bc2014-03-06 04:19:50 +00001291 ),
1292
Jeff Mahoneybc074522016-06-09 17:27:55 -04001293 TP_fast_assign_btrfs(btrfs_work_owner(work),
Qu Wenruo52483bc2014-03-06 04:19:50 +00001294 __entry->work = work;
1295 __entry->wq = work->wq;
1296 __entry->func = work->func;
1297 __entry->ordered_func = work->ordered_func;
1298 __entry->ordered_free = work->ordered_free;
Liu Bob38a6252014-08-12 16:33:17 +08001299 __entry->normal_work = &work->normal_work;
Qu Wenruo52483bc2014-03-06 04:19:50 +00001300 ),
1301
David Sterba562a7a02017-01-06 15:51:36 +01001302 TP_printk_btrfs("work=%p (normal_work=%p) wq=%p func=%pf ordered_func=%p "
1303 "ordered_free=%p",
Liu Bob38a6252014-08-12 16:33:17 +08001304 __entry->work, __entry->normal_work, __entry->wq,
1305 __entry->func, __entry->ordered_func, __entry->ordered_free)
Qu Wenruo52483bc2014-03-06 04:19:50 +00001306);
1307
David Sterbaac0c7cf2017-01-06 14:12:51 +01001308/*
1309 * For situiations when the work is freed, we pass fs_info and a tag that that
1310 * matches address of the work structure so it can be paired with the
1311 * scheduling event.
1312 */
Qu Wenruo52483bc2014-03-06 04:19:50 +00001313DECLARE_EVENT_CLASS(btrfs__work__done,
1314
David Sterbaac0c7cf2017-01-06 14:12:51 +01001315 TP_PROTO(struct btrfs_fs_info *fs_info, void *wtag),
Qu Wenruo52483bc2014-03-06 04:19:50 +00001316
David Sterbaac0c7cf2017-01-06 14:12:51 +01001317 TP_ARGS(fs_info, wtag),
Qu Wenruo52483bc2014-03-06 04:19:50 +00001318
Jeff Mahoneybc074522016-06-09 17:27:55 -04001319 TP_STRUCT__entry_btrfs(
David Sterbaac0c7cf2017-01-06 14:12:51 +01001320 __field( void *, wtag )
Qu Wenruo52483bc2014-03-06 04:19:50 +00001321 ),
1322
David Sterbaac0c7cf2017-01-06 14:12:51 +01001323 TP_fast_assign_btrfs(fs_info,
1324 __entry->wtag = wtag;
Qu Wenruo52483bc2014-03-06 04:19:50 +00001325 ),
1326
David Sterbaac0c7cf2017-01-06 14:12:51 +01001327 TP_printk_btrfs("work->%p", __entry->wtag)
Qu Wenruo52483bc2014-03-06 04:19:50 +00001328);
1329
1330DEFINE_EVENT(btrfs__work, btrfs_work_queued,
1331
1332 TP_PROTO(struct btrfs_work *work),
1333
1334 TP_ARGS(work)
1335);
1336
1337DEFINE_EVENT(btrfs__work, btrfs_work_sched,
1338
1339 TP_PROTO(struct btrfs_work *work),
1340
1341 TP_ARGS(work)
1342);
1343
Qu Wenruo52483bc2014-03-06 04:19:50 +00001344DEFINE_EVENT(btrfs__work__done, btrfs_all_work_done,
1345
David Sterbaac0c7cf2017-01-06 14:12:51 +01001346 TP_PROTO(struct btrfs_fs_info *fs_info, void *wtag),
Qu Wenruo52483bc2014-03-06 04:19:50 +00001347
David Sterbaac0c7cf2017-01-06 14:12:51 +01001348 TP_ARGS(fs_info, wtag)
Qu Wenruo52483bc2014-03-06 04:19:50 +00001349);
1350
1351DEFINE_EVENT(btrfs__work, btrfs_ordered_sched,
1352
1353 TP_PROTO(struct btrfs_work *work),
1354
1355 TP_ARGS(work)
1356);
1357
Qu Wenruoc3a46892014-03-12 08:05:33 +00001358DECLARE_EVENT_CLASS(btrfs__workqueue,
1359
1360 TP_PROTO(struct __btrfs_workqueue *wq, const char *name, int high),
1361
1362 TP_ARGS(wq, name, high),
1363
Jeff Mahoneybc074522016-06-09 17:27:55 -04001364 TP_STRUCT__entry_btrfs(
Qu Wenruoc3a46892014-03-12 08:05:33 +00001365 __field( void *, wq )
1366 __string( name, name )
1367 __field( int , high )
1368 ),
1369
Jeff Mahoneybc074522016-06-09 17:27:55 -04001370 TP_fast_assign_btrfs(btrfs_workqueue_owner(wq),
Qu Wenruoc3a46892014-03-12 08:05:33 +00001371 __entry->wq = wq;
1372 __assign_str(name, name);
1373 __entry->high = high;
1374 ),
1375
David Sterba562a7a02017-01-06 15:51:36 +01001376 TP_printk_btrfs("name=%s%s wq=%p", __get_str(name),
Qu Wenruoc3a46892014-03-12 08:05:33 +00001377 __print_flags(__entry->high, "",
1378 {(WQ_HIGHPRI), "-high"}),
1379 __entry->wq)
1380);
1381
1382DEFINE_EVENT(btrfs__workqueue, btrfs_workqueue_alloc,
1383
1384 TP_PROTO(struct __btrfs_workqueue *wq, const char *name, int high),
1385
1386 TP_ARGS(wq, name, high)
1387);
1388
1389DECLARE_EVENT_CLASS(btrfs__workqueue_done,
1390
1391 TP_PROTO(struct __btrfs_workqueue *wq),
1392
1393 TP_ARGS(wq),
1394
Jeff Mahoneybc074522016-06-09 17:27:55 -04001395 TP_STRUCT__entry_btrfs(
Qu Wenruoc3a46892014-03-12 08:05:33 +00001396 __field( void *, wq )
1397 ),
1398
Jeff Mahoneybc074522016-06-09 17:27:55 -04001399 TP_fast_assign_btrfs(btrfs_workqueue_owner(wq),
Qu Wenruoc3a46892014-03-12 08:05:33 +00001400 __entry->wq = wq;
1401 ),
1402
Jeff Mahoneybc074522016-06-09 17:27:55 -04001403 TP_printk_btrfs("wq=%p", __entry->wq)
Qu Wenruoc3a46892014-03-12 08:05:33 +00001404);
1405
1406DEFINE_EVENT(btrfs__workqueue_done, btrfs_workqueue_destroy,
1407
1408 TP_PROTO(struct __btrfs_workqueue *wq),
1409
1410 TP_ARGS(wq)
1411);
Qu Wenruo52483bc2014-03-06 04:19:50 +00001412
Qu Wenruo81fb6f72015-09-28 16:57:53 +08001413DECLARE_EVENT_CLASS(btrfs__qgroup_data_map,
1414
1415 TP_PROTO(struct inode *inode, u64 free_reserved),
1416
1417 TP_ARGS(inode, free_reserved),
1418
Jeff Mahoneybc074522016-06-09 17:27:55 -04001419 TP_STRUCT__entry_btrfs(
Qu Wenruo81fb6f72015-09-28 16:57:53 +08001420 __field( u64, rootid )
1421 __field( unsigned long, ino )
1422 __field( u64, free_reserved )
1423 ),
1424
Jeff Mahoneybc074522016-06-09 17:27:55 -04001425 TP_fast_assign_btrfs(btrfs_sb(inode->i_sb),
Qu Wenruo81fb6f72015-09-28 16:57:53 +08001426 __entry->rootid = BTRFS_I(inode)->root->objectid;
1427 __entry->ino = inode->i_ino;
1428 __entry->free_reserved = free_reserved;
1429 ),
1430
David Sterba562a7a02017-01-06 15:51:36 +01001431 TP_printk_btrfs("rootid=%llu ino=%lu free_reserved=%llu",
Qu Wenruo81fb6f72015-09-28 16:57:53 +08001432 __entry->rootid, __entry->ino, __entry->free_reserved)
1433);
1434
1435DEFINE_EVENT(btrfs__qgroup_data_map, btrfs_qgroup_init_data_rsv_map,
1436
1437 TP_PROTO(struct inode *inode, u64 free_reserved),
1438
1439 TP_ARGS(inode, free_reserved)
1440);
1441
1442DEFINE_EVENT(btrfs__qgroup_data_map, btrfs_qgroup_free_data_rsv_map,
1443
1444 TP_PROTO(struct inode *inode, u64 free_reserved),
1445
1446 TP_ARGS(inode, free_reserved)
1447);
1448
1449#define BTRFS_QGROUP_OPERATIONS \
1450 { QGROUP_RESERVE, "reserve" }, \
1451 { QGROUP_RELEASE, "release" }, \
1452 { QGROUP_FREE, "free" }
1453
1454DECLARE_EVENT_CLASS(btrfs__qgroup_rsv_data,
1455
1456 TP_PROTO(struct inode *inode, u64 start, u64 len, u64 reserved, int op),
1457
1458 TP_ARGS(inode, start, len, reserved, op),
1459
Jeff Mahoneybc074522016-06-09 17:27:55 -04001460 TP_STRUCT__entry_btrfs(
Qu Wenruo81fb6f72015-09-28 16:57:53 +08001461 __field( u64, rootid )
1462 __field( unsigned long, ino )
1463 __field( u64, start )
1464 __field( u64, len )
1465 __field( u64, reserved )
1466 __field( int, op )
1467 ),
1468
Jeff Mahoneybc074522016-06-09 17:27:55 -04001469 TP_fast_assign_btrfs(btrfs_sb(inode->i_sb),
Qu Wenruo81fb6f72015-09-28 16:57:53 +08001470 __entry->rootid = BTRFS_I(inode)->root->objectid;
1471 __entry->ino = inode->i_ino;
1472 __entry->start = start;
1473 __entry->len = len;
1474 __entry->reserved = reserved;
1475 __entry->op = op;
1476 ),
1477
David Sterba562a7a02017-01-06 15:51:36 +01001478 TP_printk_btrfs("root=%llu ino=%lu start=%llu len=%llu reserved=%llu op=%s",
Qu Wenruo81fb6f72015-09-28 16:57:53 +08001479 __entry->rootid, __entry->ino, __entry->start, __entry->len,
1480 __entry->reserved,
1481 __print_flags((unsigned long)__entry->op, "",
1482 BTRFS_QGROUP_OPERATIONS)
1483 )
1484);
1485
1486DEFINE_EVENT(btrfs__qgroup_rsv_data, btrfs_qgroup_reserve_data,
1487
1488 TP_PROTO(struct inode *inode, u64 start, u64 len, u64 reserved, int op),
1489
1490 TP_ARGS(inode, start, len, reserved, op)
1491);
1492
1493DEFINE_EVENT(btrfs__qgroup_rsv_data, btrfs_qgroup_release_data,
1494
1495 TP_PROTO(struct inode *inode, u64 start, u64 len, u64 reserved, int op),
1496
1497 TP_ARGS(inode, start, len, reserved, op)
1498);
1499
1500DECLARE_EVENT_CLASS(btrfs__qgroup_delayed_ref,
1501
Jeff Mahoneybc074522016-06-09 17:27:55 -04001502 TP_PROTO(struct btrfs_fs_info *fs_info, u64 ref_root, u64 reserved),
Qu Wenruo81fb6f72015-09-28 16:57:53 +08001503
Jeff Mahoneybc074522016-06-09 17:27:55 -04001504 TP_ARGS(fs_info, ref_root, reserved),
Qu Wenruo81fb6f72015-09-28 16:57:53 +08001505
Jeff Mahoneybc074522016-06-09 17:27:55 -04001506 TP_STRUCT__entry_btrfs(
Qu Wenruo81fb6f72015-09-28 16:57:53 +08001507 __field( u64, ref_root )
1508 __field( u64, reserved )
1509 ),
1510
Jeff Mahoneybc074522016-06-09 17:27:55 -04001511 TP_fast_assign_btrfs(fs_info,
Qu Wenruo81fb6f72015-09-28 16:57:53 +08001512 __entry->ref_root = ref_root;
1513 __entry->reserved = reserved;
1514 ),
1515
David Sterba562a7a02017-01-06 15:51:36 +01001516 TP_printk_btrfs("root=%llu reserved=%llu op=free",
Qu Wenruo81fb6f72015-09-28 16:57:53 +08001517 __entry->ref_root, __entry->reserved)
1518);
1519
1520DEFINE_EVENT(btrfs__qgroup_delayed_ref, btrfs_qgroup_free_delayed_ref,
1521
Jeff Mahoneybc074522016-06-09 17:27:55 -04001522 TP_PROTO(struct btrfs_fs_info *fs_info, u64 ref_root, u64 reserved),
Qu Wenruo81fb6f72015-09-28 16:57:53 +08001523
Jeff Mahoneybc074522016-06-09 17:27:55 -04001524 TP_ARGS(fs_info, ref_root, reserved)
Qu Wenruo81fb6f72015-09-28 16:57:53 +08001525);
Mark Fasheh0f5dcf82016-03-29 17:19:55 -07001526
1527DECLARE_EVENT_CLASS(btrfs_qgroup_extent,
Jeff Mahoneybc074522016-06-09 17:27:55 -04001528 TP_PROTO(struct btrfs_fs_info *fs_info,
1529 struct btrfs_qgroup_extent_record *rec),
Mark Fasheh0f5dcf82016-03-29 17:19:55 -07001530
Jeff Mahoneybc074522016-06-09 17:27:55 -04001531 TP_ARGS(fs_info, rec),
Mark Fasheh0f5dcf82016-03-29 17:19:55 -07001532
Jeff Mahoneybc074522016-06-09 17:27:55 -04001533 TP_STRUCT__entry_btrfs(
Mark Fasheh0f5dcf82016-03-29 17:19:55 -07001534 __field( u64, bytenr )
1535 __field( u64, num_bytes )
1536 ),
1537
Jeff Mahoneybc074522016-06-09 17:27:55 -04001538 TP_fast_assign_btrfs(fs_info,
Mark Fasheh0f5dcf82016-03-29 17:19:55 -07001539 __entry->bytenr = rec->bytenr,
1540 __entry->num_bytes = rec->num_bytes;
1541 ),
1542
David Sterba562a7a02017-01-06 15:51:36 +01001543 TP_printk_btrfs("bytenr=%llu num_bytes=%llu",
Mark Fasheh0f5dcf82016-03-29 17:19:55 -07001544 (unsigned long long)__entry->bytenr,
1545 (unsigned long long)__entry->num_bytes)
1546);
1547
1548DEFINE_EVENT(btrfs_qgroup_extent, btrfs_qgroup_account_extents,
1549
Jeff Mahoneybc074522016-06-09 17:27:55 -04001550 TP_PROTO(struct btrfs_fs_info *fs_info,
1551 struct btrfs_qgroup_extent_record *rec),
Mark Fasheh0f5dcf82016-03-29 17:19:55 -07001552
Jeff Mahoneybc074522016-06-09 17:27:55 -04001553 TP_ARGS(fs_info, rec)
Mark Fasheh0f5dcf82016-03-29 17:19:55 -07001554);
1555
Qu Wenruo50b3e042016-10-18 09:31:27 +08001556DEFINE_EVENT(btrfs_qgroup_extent, btrfs_qgroup_trace_extent,
Mark Fasheh0f5dcf82016-03-29 17:19:55 -07001557
Jeff Mahoneybc074522016-06-09 17:27:55 -04001558 TP_PROTO(struct btrfs_fs_info *fs_info,
1559 struct btrfs_qgroup_extent_record *rec),
Mark Fasheh0f5dcf82016-03-29 17:19:55 -07001560
Jeff Mahoneybc074522016-06-09 17:27:55 -04001561 TP_ARGS(fs_info, rec)
Mark Fasheh0f5dcf82016-03-29 17:19:55 -07001562);
1563
1564TRACE_EVENT(btrfs_qgroup_account_extent,
1565
Jeff Mahoneybc074522016-06-09 17:27:55 -04001566 TP_PROTO(struct btrfs_fs_info *fs_info, u64 bytenr,
1567 u64 num_bytes, u64 nr_old_roots, u64 nr_new_roots),
Mark Fasheh0f5dcf82016-03-29 17:19:55 -07001568
Jeff Mahoneybc074522016-06-09 17:27:55 -04001569 TP_ARGS(fs_info, bytenr, num_bytes, nr_old_roots, nr_new_roots),
Mark Fasheh0f5dcf82016-03-29 17:19:55 -07001570
Jeff Mahoneybc074522016-06-09 17:27:55 -04001571 TP_STRUCT__entry_btrfs(
Mark Fasheh0f5dcf82016-03-29 17:19:55 -07001572 __field( u64, bytenr )
1573 __field( u64, num_bytes )
1574 __field( u64, nr_old_roots )
1575 __field( u64, nr_new_roots )
1576 ),
1577
Jeff Mahoneybc074522016-06-09 17:27:55 -04001578 TP_fast_assign_btrfs(fs_info,
Mark Fasheh0f5dcf82016-03-29 17:19:55 -07001579 __entry->bytenr = bytenr;
1580 __entry->num_bytes = num_bytes;
1581 __entry->nr_old_roots = nr_old_roots;
1582 __entry->nr_new_roots = nr_new_roots;
1583 ),
1584
David Sterba562a7a02017-01-06 15:51:36 +01001585 TP_printk_btrfs("bytenr=%llu num_bytes=%llu nr_old_roots=%llu "
1586 "nr_new_roots=%llu",
Mark Fasheh0f5dcf82016-03-29 17:19:55 -07001587 __entry->bytenr,
1588 __entry->num_bytes,
1589 __entry->nr_old_roots,
1590 __entry->nr_new_roots)
1591);
1592
1593TRACE_EVENT(qgroup_update_counters,
1594
Jeff Mahoneybc074522016-06-09 17:27:55 -04001595 TP_PROTO(struct btrfs_fs_info *fs_info, u64 qgid,
1596 u64 cur_old_count, u64 cur_new_count),
Mark Fasheh0f5dcf82016-03-29 17:19:55 -07001597
Jeff Mahoneybc074522016-06-09 17:27:55 -04001598 TP_ARGS(fs_info, qgid, cur_old_count, cur_new_count),
Mark Fasheh0f5dcf82016-03-29 17:19:55 -07001599
Jeff Mahoneybc074522016-06-09 17:27:55 -04001600 TP_STRUCT__entry_btrfs(
Mark Fasheh0f5dcf82016-03-29 17:19:55 -07001601 __field( u64, qgid )
1602 __field( u64, cur_old_count )
1603 __field( u64, cur_new_count )
1604 ),
1605
Jeff Mahoneybc074522016-06-09 17:27:55 -04001606 TP_fast_assign_btrfs(fs_info,
Mark Fasheh0f5dcf82016-03-29 17:19:55 -07001607 __entry->qgid = qgid;
1608 __entry->cur_old_count = cur_old_count;
1609 __entry->cur_new_count = cur_new_count;
1610 ),
1611
David Sterba562a7a02017-01-06 15:51:36 +01001612 TP_printk_btrfs("qgid=%llu cur_old_count=%llu cur_new_count=%llu",
Mark Fasheh0f5dcf82016-03-29 17:19:55 -07001613 __entry->qgid,
1614 __entry->cur_old_count,
1615 __entry->cur_new_count)
1616);
1617
Qu Wenruo3159fe72017-03-13 15:52:08 +08001618TRACE_EVENT(qgroup_update_reserve,
1619
1620 TP_PROTO(struct btrfs_fs_info *fs_info, struct btrfs_qgroup *qgroup,
1621 s64 diff),
1622
1623 TP_ARGS(fs_info, qgroup, diff),
1624
1625 TP_STRUCT__entry_btrfs(
1626 __field( u64, qgid )
1627 __field( u64, cur_reserved )
1628 __field( s64, diff )
1629 ),
1630
1631 TP_fast_assign_btrfs(fs_info,
1632 __entry->qgid = qgroup->qgroupid;
1633 __entry->cur_reserved = qgroup->reserved;
1634 __entry->diff = diff;
1635 ),
1636
1637 TP_printk_btrfs("qgid=%llu cur_reserved=%llu diff=%lld",
1638 __entry->qgid, __entry->cur_reserved, __entry->diff)
1639);
1640
1641TRACE_EVENT(qgroup_meta_reserve,
1642
1643 TP_PROTO(struct btrfs_root *root, s64 diff),
1644
1645 TP_ARGS(root, diff),
1646
1647 TP_STRUCT__entry_btrfs(
1648 __field( u64, refroot )
1649 __field( s64, diff )
1650 ),
1651
1652 TP_fast_assign_btrfs(root->fs_info,
1653 __entry->refroot = root->objectid;
1654 __entry->diff = diff;
1655 ),
1656
1657 TP_printk_btrfs("refroot=%llu(%s) diff=%lld",
1658 show_root_type(__entry->refroot), __entry->diff)
1659);
1660
liubo1abe9b82011-03-24 11:18:59 +00001661#endif /* _TRACE_BTRFS_H */
1662
1663/* This part must be outside protection */
1664#include <trace/define_trace.h>