xref: /openbmc/linux/include/trace/events/btrfs.h (revision 1abe9b8a)
1 #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>
9 
10 struct btrfs_root;
11 struct btrfs_fs_info;
12 struct btrfs_inode;
13 struct extent_map;
14 struct btrfs_ordered_extent;
15 struct btrfs_delayed_ref_node;
16 struct btrfs_delayed_tree_ref;
17 struct btrfs_delayed_data_ref;
18 struct btrfs_delayed_ref_head;
19 struct map_lookup;
20 struct extent_buffer;
21 
22 #define show_ref_type(type)						\
23 	__print_symbolic(type,						\
24 		{ BTRFS_TREE_BLOCK_REF_KEY, 	"TREE_BLOCK_REF" },	\
25 		{ BTRFS_EXTENT_DATA_REF_KEY, 	"EXTENT_DATA_REF" },	\
26 		{ BTRFS_EXTENT_REF_V0_KEY, 	"EXTENT_REF_V0" },	\
27 		{ BTRFS_SHARED_BLOCK_REF_KEY, 	"SHARED_BLOCK_REF" },	\
28 		{ BTRFS_SHARED_DATA_REF_KEY, 	"SHARED_DATA_REF" })
29 
30 #define __show_root_type(obj)						\
31 	__print_symbolic(obj,						\
32 		{ BTRFS_ROOT_TREE_OBJECTID, 	"ROOT_TREE"	},	\
33 		{ BTRFS_EXTENT_TREE_OBJECTID, 	"EXTENT_TREE"	},	\
34 		{ BTRFS_CHUNK_TREE_OBJECTID, 	"CHUNK_TREE"	},	\
35 		{ BTRFS_DEV_TREE_OBJECTID, 	"DEV_TREE"	},	\
36 		{ BTRFS_FS_TREE_OBJECTID, 	"FS_TREE"	},	\
37 		{ BTRFS_ROOT_TREE_DIR_OBJECTID, "ROOT_TREE_DIR"	},	\
38 		{ BTRFS_CSUM_TREE_OBJECTID, 	"CSUM_TREE"	},	\
39 		{ BTRFS_TREE_LOG_OBJECTID,	"TREE_LOG"	},	\
40 		{ BTRFS_TREE_RELOC_OBJECTID,	"TREE_RELOC"	},	\
41 		{ BTRFS_DATA_RELOC_TREE_OBJECTID, "DATA_RELOC_TREE" })
42 
43 #define show_root_type(obj)						\
44 	obj, ((obj >= BTRFS_DATA_RELOC_TREE_OBJECTID) ||		\
45 	      (obj <= BTRFS_CSUM_TREE_OBJECTID )) ? __show_root_type(obj) : "-"
46 
47 TRACE_EVENT(btrfs_transaction_commit,
48 
49 	TP_PROTO(struct btrfs_root *root),
50 
51 	TP_ARGS(root),
52 
53 	TP_STRUCT__entry(
54 		__field(	u64,  generation		)
55 		__field(	u64,  root_objectid		)
56 	),
57 
58 	TP_fast_assign(
59 		__entry->generation	= root->fs_info->generation;
60 		__entry->root_objectid	= root->root_key.objectid;
61 	),
62 
63 	TP_printk("root = %llu(%s), gen = %llu",
64 		  show_root_type(__entry->root_objectid),
65 		  (unsigned long long)__entry->generation)
66 );
67 
68 DECLARE_EVENT_CLASS(btrfs__inode,
69 
70 	TP_PROTO(struct inode *inode),
71 
72 	TP_ARGS(inode),
73 
74 	TP_STRUCT__entry(
75 		__field(	ino_t,  ino			)
76 		__field(	blkcnt_t,  blocks		)
77 		__field(	u64,  disk_i_size		)
78 		__field(	u64,  generation		)
79 		__field(	u64,  last_trans		)
80 		__field(	u64,  logged_trans		)
81 		__field(	u64,  root_objectid		)
82 	),
83 
84 	TP_fast_assign(
85 		__entry->ino	= inode->i_ino;
86 		__entry->blocks	= inode->i_blocks;
87 		__entry->disk_i_size  = BTRFS_I(inode)->disk_i_size;
88 		__entry->generation = BTRFS_I(inode)->generation;
89 		__entry->last_trans = BTRFS_I(inode)->last_trans;
90 		__entry->logged_trans = BTRFS_I(inode)->logged_trans;
91 		__entry->root_objectid =
92 				BTRFS_I(inode)->root->root_key.objectid;
93 	),
94 
95 	TP_printk("root = %llu(%s), gen = %llu, ino = %lu, blocks = %llu, "
96 		  "disk_i_size = %llu, last_trans = %llu, logged_trans = %llu",
97 		  show_root_type(__entry->root_objectid),
98 		  (unsigned long long)__entry->generation,
99 		  (unsigned long)__entry->ino,
100 		  (unsigned long long)__entry->blocks,
101 		  (unsigned long long)__entry->disk_i_size,
102 		  (unsigned long long)__entry->last_trans,
103 		  (unsigned long long)__entry->logged_trans)
104 );
105 
106 DEFINE_EVENT(btrfs__inode, btrfs_inode_new,
107 
108 	TP_PROTO(struct inode *inode),
109 
110 	TP_ARGS(inode)
111 );
112 
113 DEFINE_EVENT(btrfs__inode, btrfs_inode_request,
114 
115 	TP_PROTO(struct inode *inode),
116 
117 	TP_ARGS(inode)
118 );
119 
120 DEFINE_EVENT(btrfs__inode, btrfs_inode_evict,
121 
122 	TP_PROTO(struct inode *inode),
123 
124 	TP_ARGS(inode)
125 );
126 
127 #define __show_map_type(type)						\
128 	__print_symbolic(type,						\
129 		{ EXTENT_MAP_LAST_BYTE, "LAST_BYTE" 	},		\
130 		{ EXTENT_MAP_HOLE, 	"HOLE" 		},		\
131 		{ EXTENT_MAP_INLINE, 	"INLINE" 	},		\
132 		{ EXTENT_MAP_DELALLOC,	"DELALLOC" 	})
133 
134 #define show_map_type(type)			\
135 	type, (type >= EXTENT_MAP_LAST_BYTE) ? "-" :  __show_map_type(type)
136 
137 #define show_map_flags(flag)						\
138 	__print_flags(flag, "|",					\
139 		{ EXTENT_FLAG_PINNED, 		"PINNED" 	},	\
140 		{ EXTENT_FLAG_COMPRESSED, 	"COMPRESSED" 	},	\
141 		{ EXTENT_FLAG_VACANCY, 		"VACANCY" 	},	\
142 		{ EXTENT_FLAG_PREALLOC, 	"PREALLOC" 	})
143 
144 TRACE_EVENT(btrfs_get_extent,
145 
146 	TP_PROTO(struct btrfs_root *root, struct extent_map *map),
147 
148 	TP_ARGS(root, map),
149 
150 	TP_STRUCT__entry(
151 		__field(	u64,  root_objectid	)
152 		__field(	u64,  start		)
153 		__field(	u64,  len		)
154 		__field(	u64,  orig_start	)
155 		__field(	u64,  block_start	)
156 		__field(	u64,  block_len		)
157 		__field(	unsigned long,  flags	)
158 		__field(	int,  refs		)
159 		__field(	unsigned int,  compress_type	)
160 	),
161 
162 	TP_fast_assign(
163 		__entry->root_objectid	= root->root_key.objectid;
164 		__entry->start 		= map->start;
165 		__entry->len		= map->len;
166 		__entry->orig_start	= map->orig_start;
167 		__entry->block_start	= map->block_start;
168 		__entry->block_len	= map->block_len;
169 		__entry->flags		= map->flags;
170 		__entry->refs		= atomic_read(&map->refs);
171 		__entry->compress_type	= map->compress_type;
172 	),
173 
174 	TP_printk("root = %llu(%s), start = %llu, len = %llu, "
175 		  "orig_start = %llu, block_start = %llu(%s), "
176 		  "block_len = %llu, flags = %s, refs = %u, "
177 		  "compress_type = %u",
178 		  show_root_type(__entry->root_objectid),
179 		  (unsigned long long)__entry->start,
180 		  (unsigned long long)__entry->len,
181 		  (unsigned long long)__entry->orig_start,
182 		  show_map_type(__entry->block_start),
183 		  (unsigned long long)__entry->block_len,
184 		  show_map_flags(__entry->flags),
185 		  __entry->refs, __entry->compress_type)
186 );
187 
188 #define show_ordered_flags(flags)					\
189 	__print_symbolic(flags,					\
190 		{ BTRFS_ORDERED_IO_DONE, 	"IO_DONE" 	},	\
191 		{ BTRFS_ORDERED_COMPLETE, 	"COMPLETE" 	},	\
192 		{ BTRFS_ORDERED_NOCOW, 		"NOCOW" 	},	\
193 		{ BTRFS_ORDERED_COMPRESSED, 	"COMPRESSED" 	},	\
194 		{ BTRFS_ORDERED_PREALLOC, 	"PREALLOC" 	},	\
195 		{ BTRFS_ORDERED_DIRECT, 	"DIRECT" 	})
196 
197 DECLARE_EVENT_CLASS(btrfs__ordered_extent,
198 
199 	TP_PROTO(struct inode *inode, struct btrfs_ordered_extent *ordered),
200 
201 	TP_ARGS(inode, ordered),
202 
203 	TP_STRUCT__entry(
204 		__field(	ino_t,  ino		)
205 		__field(	u64,  file_offset	)
206 		__field(	u64,  start		)
207 		__field(	u64,  len		)
208 		__field(	u64,  disk_len		)
209 		__field(	u64,  bytes_left	)
210 		__field(	unsigned long,  flags	)
211 		__field(	int,  compress_type	)
212 		__field(	int,  refs		)
213 		__field(	u64,  root_objectid	)
214 	),
215 
216 	TP_fast_assign(
217 		__entry->ino 		= inode->i_ino;
218 		__entry->file_offset	= ordered->file_offset;
219 		__entry->start		= ordered->start;
220 		__entry->len		= ordered->len;
221 		__entry->disk_len	= ordered->disk_len;
222 		__entry->bytes_left	= ordered->bytes_left;
223 		__entry->flags		= ordered->flags;
224 		__entry->compress_type	= ordered->compress_type;
225 		__entry->refs		= atomic_read(&ordered->refs);
226 		__entry->root_objectid	=
227 				BTRFS_I(inode)->root->root_key.objectid;
228 	),
229 
230 	TP_printk("root = %llu(%s), ino = %llu, file_offset = %llu, "
231 		  "start = %llu, len = %llu, disk_len = %llu, "
232 		  "bytes_left = %llu, flags = %s, compress_type = %d, "
233 		  "refs = %d",
234 		  show_root_type(__entry->root_objectid),
235 		  (unsigned long long)__entry->ino,
236 		  (unsigned long long)__entry->file_offset,
237 		  (unsigned long long)__entry->start,
238 		  (unsigned long long)__entry->len,
239 		  (unsigned long long)__entry->disk_len,
240 		  (unsigned long long)__entry->bytes_left,
241 		  show_ordered_flags(__entry->flags),
242 		  __entry->compress_type, __entry->refs)
243 );
244 
245 DEFINE_EVENT(btrfs__ordered_extent, btrfs_ordered_extent_add,
246 
247 	TP_PROTO(struct inode *inode, struct btrfs_ordered_extent *ordered),
248 
249 	TP_ARGS(inode, ordered)
250 );
251 
252 DEFINE_EVENT(btrfs__ordered_extent, btrfs_ordered_extent_remove,
253 
254 	TP_PROTO(struct inode *inode, struct btrfs_ordered_extent *ordered),
255 
256 	TP_ARGS(inode, ordered)
257 );
258 
259 DEFINE_EVENT(btrfs__ordered_extent, btrfs_ordered_extent_start,
260 
261 	TP_PROTO(struct inode *inode, struct btrfs_ordered_extent *ordered),
262 
263 	TP_ARGS(inode, ordered)
264 );
265 
266 DEFINE_EVENT(btrfs__ordered_extent, btrfs_ordered_extent_put,
267 
268 	TP_PROTO(struct inode *inode, struct btrfs_ordered_extent *ordered),
269 
270 	TP_ARGS(inode, ordered)
271 );
272 
273 DECLARE_EVENT_CLASS(btrfs__writepage,
274 
275 	TP_PROTO(struct page *page, struct inode *inode,
276 		 struct writeback_control *wbc),
277 
278 	TP_ARGS(page, inode, wbc),
279 
280 	TP_STRUCT__entry(
281 		__field(	ino_t,  ino			)
282 		__field(	pgoff_t,  index			)
283 		__field(	long,   nr_to_write		)
284 		__field(	long,   pages_skipped		)
285 		__field(	loff_t, range_start		)
286 		__field(	loff_t, range_end		)
287 		__field(	char,   nonblocking		)
288 		__field(	char,   for_kupdate		)
289 		__field(	char,   for_reclaim		)
290 		__field(	char,   range_cyclic		)
291 		__field(	pgoff_t,  writeback_index	)
292 		__field(	u64,    root_objectid		)
293 	),
294 
295 	TP_fast_assign(
296 		__entry->ino		= inode->i_ino;
297 		__entry->index		= page->index;
298 		__entry->nr_to_write	= wbc->nr_to_write;
299 		__entry->pages_skipped	= wbc->pages_skipped;
300 		__entry->range_start	= wbc->range_start;
301 		__entry->range_end	= wbc->range_end;
302 		__entry->nonblocking	= wbc->nonblocking;
303 		__entry->for_kupdate	= wbc->for_kupdate;
304 		__entry->for_reclaim	= wbc->for_reclaim;
305 		__entry->range_cyclic	= wbc->range_cyclic;
306 		__entry->writeback_index = inode->i_mapping->writeback_index;
307 		__entry->root_objectid	=
308 				 BTRFS_I(inode)->root->root_key.objectid;
309 	),
310 
311 	TP_printk("root = %llu(%s), ino = %lu, page_index = %lu, "
312 		  "nr_to_write = %ld, pages_skipped = %ld, range_start = %llu, "
313 		  "range_end = %llu, nonblocking = %d, for_kupdate = %d, "
314 		  "for_reclaim = %d, range_cyclic = %d, writeback_index = %lu",
315 		  show_root_type(__entry->root_objectid),
316 		  (unsigned long)__entry->ino, __entry->index,
317 		  __entry->nr_to_write, __entry->pages_skipped,
318 		  __entry->range_start, __entry->range_end,
319 		  __entry->nonblocking, __entry->for_kupdate,
320 		  __entry->for_reclaim, __entry->range_cyclic,
321 		  (unsigned long)__entry->writeback_index)
322 );
323 
324 DEFINE_EVENT(btrfs__writepage, __extent_writepage,
325 
326 	TP_PROTO(struct page *page, struct inode *inode,
327 		 struct writeback_control *wbc),
328 
329 	TP_ARGS(page, inode, wbc)
330 );
331 
332 TRACE_EVENT(btrfs_writepage_end_io_hook,
333 
334 	TP_PROTO(struct page *page, u64 start, u64 end, int uptodate),
335 
336 	TP_ARGS(page, start, end, uptodate),
337 
338 	TP_STRUCT__entry(
339 		__field(	ino_t,	 ino		)
340 		__field(	pgoff_t, index		)
341 		__field(	u64,	 start		)
342 		__field(	u64,	 end		)
343 		__field(	int,	 uptodate	)
344 		__field(	u64,    root_objectid	)
345 	),
346 
347 	TP_fast_assign(
348 		__entry->ino	= page->mapping->host->i_ino;
349 		__entry->index	= page->index;
350 		__entry->start	= start;
351 		__entry->end	= end;
352 		__entry->uptodate = uptodate;
353 		__entry->root_objectid	=
354 			 BTRFS_I(page->mapping->host)->root->root_key.objectid;
355 	),
356 
357 	TP_printk("root = %llu(%s), ino = %lu, page_index = %lu, start = %llu, "
358 		  "end = %llu, uptodate = %d",
359 		  show_root_type(__entry->root_objectid),
360 		  (unsigned long)__entry->ino, (unsigned long)__entry->index,
361 		  (unsigned long long)__entry->start,
362 		  (unsigned long long)__entry->end, __entry->uptodate)
363 );
364 
365 TRACE_EVENT(btrfs_sync_file,
366 
367 	TP_PROTO(struct file *file, int datasync),
368 
369 	TP_ARGS(file, datasync),
370 
371 	TP_STRUCT__entry(
372 		__field(	ino_t,  ino		)
373 		__field(	ino_t,  parent		)
374 		__field(	int,    datasync	)
375 		__field(	u64,    root_objectid	)
376 	),
377 
378 	TP_fast_assign(
379 		struct dentry *dentry = file->f_path.dentry;
380 		struct inode *inode = dentry->d_inode;
381 
382 		__entry->ino		= inode->i_ino;
383 		__entry->parent		= dentry->d_parent->d_inode->i_ino;
384 		__entry->datasync	= datasync;
385 		__entry->root_objectid	=
386 				 BTRFS_I(inode)->root->root_key.objectid;
387 	),
388 
389 	TP_printk("root = %llu(%s), ino = %ld, parent = %ld, datasync = %d",
390 		  show_root_type(__entry->root_objectid),
391 		  (unsigned long)__entry->ino, (unsigned long)__entry->parent,
392 		  __entry->datasync)
393 );
394 
395 TRACE_EVENT(btrfs_sync_fs,
396 
397 	TP_PROTO(int wait),
398 
399 	TP_ARGS(wait),
400 
401 	TP_STRUCT__entry(
402 		__field(	int,  wait		)
403 	),
404 
405 	TP_fast_assign(
406 		__entry->wait	= wait;
407 	),
408 
409 	TP_printk("wait = %d", __entry->wait)
410 );
411 
412 #define show_ref_action(action)						\
413 	__print_symbolic(action,					\
414 		{ BTRFS_ADD_DELAYED_REF,    "ADD_DELAYED_REF" },	\
415 		{ BTRFS_DROP_DELAYED_REF,   "DROP_DELAYED_REF" },	\
416 		{ BTRFS_ADD_DELAYED_EXTENT, "ADD_DELAYED_EXTENT" }, 	\
417 		{ BTRFS_UPDATE_DELAYED_HEAD, "UPDATE_DELAYED_HEAD" })
418 
419 
420 TRACE_EVENT(btrfs_delayed_tree_ref,
421 
422 	TP_PROTO(struct btrfs_delayed_ref_node *ref,
423 		 struct btrfs_delayed_tree_ref *full_ref,
424 		 int action),
425 
426 	TP_ARGS(ref, full_ref, action),
427 
428 	TP_STRUCT__entry(
429 		__field(	u64,  bytenr		)
430 		__field(	u64,  num_bytes		)
431 		__field(	int,  action		)
432 		__field(	u64,  parent		)
433 		__field(	u64,  ref_root		)
434 		__field(	int,  level		)
435 		__field(	int,  type		)
436 	),
437 
438 	TP_fast_assign(
439 		__entry->bytenr		= ref->bytenr;
440 		__entry->num_bytes	= ref->num_bytes;
441 		__entry->action		= action;
442 		__entry->parent		= full_ref->parent;
443 		__entry->ref_root	= full_ref->root;
444 		__entry->level		= full_ref->level;
445 		__entry->type		= ref->type;
446 	),
447 
448 	TP_printk("bytenr = %llu, num_bytes = %llu, action = %s, "
449 		  "parent = %llu(%s), ref_root = %llu(%s), level = %d, "
450 		  "type = %s",
451 		  (unsigned long long)__entry->bytenr,
452 		  (unsigned long long)__entry->num_bytes,
453 		  show_ref_action(__entry->action),
454 		  show_root_type(__entry->parent),
455 		  show_root_type(__entry->ref_root),
456 		  __entry->level, show_ref_type(__entry->type))
457 );
458 
459 TRACE_EVENT(btrfs_delayed_data_ref,
460 
461 	TP_PROTO(struct btrfs_delayed_ref_node *ref,
462 		 struct btrfs_delayed_data_ref *full_ref,
463 		 int action),
464 
465 	TP_ARGS(ref, full_ref, action),
466 
467 	TP_STRUCT__entry(
468 		__field(	u64,  bytenr		)
469 		__field(	u64,  num_bytes		)
470 		__field(	int,  action		)
471 		__field(	u64,  parent		)
472 		__field(	u64,  ref_root		)
473 		__field(	u64,  owner		)
474 		__field(	u64,  offset		)
475 		__field(	int,  type		)
476 	),
477 
478 	TP_fast_assign(
479 		__entry->bytenr		= ref->bytenr;
480 		__entry->num_bytes	= ref->num_bytes;
481 		__entry->action		= action;
482 		__entry->parent		= full_ref->parent;
483 		__entry->ref_root	= full_ref->root;
484 		__entry->owner		= full_ref->objectid;
485 		__entry->offset		= full_ref->offset;
486 		__entry->type		= ref->type;
487 	),
488 
489 	TP_printk("bytenr = %llu, num_bytes = %llu, action = %s, "
490 		  "parent = %llu(%s), ref_root = %llu(%s), owner = %llu, "
491 		  "offset = %llu, type = %s",
492 		  (unsigned long long)__entry->bytenr,
493 		  (unsigned long long)__entry->num_bytes,
494 		  show_ref_action(__entry->action),
495 		  show_root_type(__entry->parent),
496 		  show_root_type(__entry->ref_root),
497 		  (unsigned long long)__entry->owner,
498 		  (unsigned long long)__entry->offset,
499 		  show_ref_type(__entry->type))
500 );
501 
502 TRACE_EVENT(btrfs_delayed_ref_head,
503 
504 	TP_PROTO(struct btrfs_delayed_ref_node *ref,
505 		 struct btrfs_delayed_ref_head *head_ref,
506 		 int action),
507 
508 	TP_ARGS(ref, head_ref, action),
509 
510 	TP_STRUCT__entry(
511 		__field(	u64,  bytenr		)
512 		__field(	u64,  num_bytes		)
513 		__field(	int,  action		)
514 		__field(	int,  is_data		)
515 	),
516 
517 	TP_fast_assign(
518 		__entry->bytenr		= ref->bytenr;
519 		__entry->num_bytes	= ref->num_bytes;
520 		__entry->action		= action;
521 		__entry->is_data	= head_ref->is_data;
522 	),
523 
524 	TP_printk("bytenr = %llu, num_bytes = %llu, action = %s, is_data = %d",
525 		  (unsigned long long)__entry->bytenr,
526 		  (unsigned long long)__entry->num_bytes,
527 		  show_ref_action(__entry->action),
528 		  __entry->is_data)
529 );
530 
531 #define show_chunk_type(type)					\
532 	__print_flags(type, "|",				\
533 		{ BTRFS_BLOCK_GROUP_DATA, 	"DATA"	},	\
534 		{ BTRFS_BLOCK_GROUP_SYSTEM, 	"SYSTEM"},	\
535 		{ BTRFS_BLOCK_GROUP_METADATA, 	"METADATA"},	\
536 		{ BTRFS_BLOCK_GROUP_RAID0, 	"RAID0" },	\
537 		{ BTRFS_BLOCK_GROUP_RAID1, 	"RAID1" },	\
538 		{ BTRFS_BLOCK_GROUP_DUP, 	"DUP"	},	\
539 		{ BTRFS_BLOCK_GROUP_RAID10, 	"RAID10"})
540 
541 DECLARE_EVENT_CLASS(btrfs__chunk,
542 
543 	TP_PROTO(struct btrfs_root *root, struct map_lookup *map,
544 		 u64 offset, u64 size),
545 
546 	TP_ARGS(root, map, offset, size),
547 
548 	TP_STRUCT__entry(
549 		__field(	int,  num_stripes		)
550 		__field(	u64,  type			)
551 		__field(	int,  sub_stripes		)
552 		__field(	u64,  offset			)
553 		__field(	u64,  size			)
554 		__field(	u64,  root_objectid		)
555 	),
556 
557 	TP_fast_assign(
558 		__entry->num_stripes	= map->num_stripes;
559 		__entry->type		= map->type;
560 		__entry->sub_stripes	= map->sub_stripes;
561 		__entry->offset		= offset;
562 		__entry->size		= size;
563 		__entry->root_objectid	= root->root_key.objectid;
564 	),
565 
566 	TP_printk("root = %llu(%s), offset = %llu, size = %llu, "
567 		  "num_stripes = %d, sub_stripes = %d, type = %s",
568 		  show_root_type(__entry->root_objectid),
569 		  (unsigned long long)__entry->offset,
570 		  (unsigned long long)__entry->size,
571 		  __entry->num_stripes, __entry->sub_stripes,
572 		  show_chunk_type(__entry->type))
573 );
574 
575 DEFINE_EVENT(btrfs__chunk,  btrfs_chunk_alloc,
576 
577 	TP_PROTO(struct btrfs_root *root, struct map_lookup *map,
578 		 u64 offset, u64 size),
579 
580 	TP_ARGS(root, map, offset, size)
581 );
582 
583 DEFINE_EVENT(btrfs__chunk,  btrfs_chunk_free,
584 
585 	TP_PROTO(struct btrfs_root *root, struct map_lookup *map,
586 		 u64 offset, u64 size),
587 
588 	TP_ARGS(root, map, offset, size)
589 );
590 
591 TRACE_EVENT(btrfs_cow_block,
592 
593 	TP_PROTO(struct btrfs_root *root, struct extent_buffer *buf,
594 		 struct extent_buffer *cow),
595 
596 	TP_ARGS(root, buf, cow),
597 
598 	TP_STRUCT__entry(
599 		__field(	u64,  root_objectid		)
600 		__field(	u64,  buf_start			)
601 		__field(	int,  refs			)
602 		__field(	u64,  cow_start			)
603 		__field(	int,  buf_level			)
604 		__field(	int,  cow_level			)
605 	),
606 
607 	TP_fast_assign(
608 		__entry->root_objectid	= root->root_key.objectid;
609 		__entry->buf_start	= buf->start;
610 		__entry->refs		= atomic_read(&buf->refs);
611 		__entry->cow_start	= cow->start;
612 		__entry->buf_level	= btrfs_header_level(buf);
613 		__entry->cow_level	= btrfs_header_level(cow);
614 	),
615 
616 	TP_printk("root = %llu(%s), refs = %d, orig_buf = %llu "
617 		  "(orig_level = %d), cow_buf = %llu (cow_level = %d)",
618 		  show_root_type(__entry->root_objectid),
619 		  __entry->refs,
620 		  (unsigned long long)__entry->buf_start,
621 		  __entry->buf_level,
622 		  (unsigned long long)__entry->cow_start,
623 		  __entry->cow_level)
624 );
625 
626 DECLARE_EVENT_CLASS(btrfs__reserved_extent,
627 
628 	TP_PROTO(struct btrfs_root *root, u64 start, u64 len),
629 
630 	TP_ARGS(root, start, len),
631 
632 	TP_STRUCT__entry(
633 		__field(	u64,  root_objectid		)
634 		__field(	u64,  start			)
635 		__field(	u64,  len			)
636 	),
637 
638 	TP_fast_assign(
639 		__entry->root_objectid	= root->root_key.objectid;
640 		__entry->start		= start;
641 		__entry->len		= len;
642 	),
643 
644 	TP_printk("root = %llu(%s), start = %llu, len = %llu",
645 		  show_root_type(__entry->root_objectid),
646 		  (unsigned long long)__entry->start,
647 		  (unsigned long long)__entry->len)
648 );
649 
650 DEFINE_EVENT(btrfs__reserved_extent,  btrfs_reserved_extent_alloc,
651 
652 	TP_PROTO(struct btrfs_root *root, u64 start, u64 len),
653 
654 	TP_ARGS(root, start, len)
655 );
656 
657 DEFINE_EVENT(btrfs__reserved_extent,  btrfs_reserved_extent_free,
658 
659 	TP_PROTO(struct btrfs_root *root, u64 start, u64 len),
660 
661 	TP_ARGS(root, start, len)
662 );
663 
664 #endif /* _TRACE_BTRFS_H */
665 
666 /* This part must be outside protection */
667 #include <trace/define_trace.h>
668