diff options
| author | Qu Wenruo <quwenruo@cn.fujitsu.com> | 2014-03-12 08:05:33 +0000 | 
|---|---|---|
| committer | Chris Mason <clm@fb.com> | 2014-03-20 17:15:28 -0700 | 
| commit | c3a468915a384c0015263edd9b7263775599a323 (patch) | |
| tree | 433ed892fc1733ddb28bf1bf2ac61bdac5b42398 /include/trace | |
| parent | f094c9bd3e12ee83e91f4249b600d4d2ac0a4738 (diff) | |
| download | linux-c3a468915a384c0015263edd9b7263775599a323.tar.bz2 | |
btrfs: Add trace for btrfs_workqueue alloc/destroy
Since most of the btrfs_workqueue is printed as pointer address,
for easier analysis, add trace for btrfs_workqueue alloc/destroy.
So it is possible to determine the workqueue that a given work belongs
to(by comparing the wq pointer address with alloc trace event).
Signed-off-by: Qu Wenruo <quenruo@cn.fujitsu.com>
Signed-off-by: Chris Mason <clm@fb.com>
Diffstat (limited to 'include/trace')
| -rw-r--r-- | include/trace/events/btrfs.h | 55 | 
1 files changed, 55 insertions, 0 deletions
| diff --git a/include/trace/events/btrfs.h b/include/trace/events/btrfs.h index c346919254a9..4ee4e30d26d9 100644 --- a/include/trace/events/btrfs.h +++ b/include/trace/events/btrfs.h @@ -22,6 +22,7 @@ struct btrfs_free_cluster;  struct map_lookup;  struct extent_buffer;  struct btrfs_work; +struct __btrfs_workqueue;  #define show_ref_type(type)						\  	__print_symbolic(type,						\ @@ -1063,6 +1064,60 @@ DEFINE_EVENT(btrfs__work, btrfs_ordered_sched,  	TP_ARGS(work)  ); +DECLARE_EVENT_CLASS(btrfs__workqueue, + +	TP_PROTO(struct __btrfs_workqueue *wq, const char *name, int high), + +	TP_ARGS(wq, name, high), + +	TP_STRUCT__entry( +		__field(	void *,	wq			) +		__string(	name,	name			) +		__field(	int ,	high			) +	), + +	TP_fast_assign( +		__entry->wq		= wq; +		__assign_str(name, name); +		__entry->high		= high; +	), + +	TP_printk("name=%s%s, wq=%p", __get_str(name), +		  __print_flags(__entry->high, "", +				{(WQ_HIGHPRI),	"-high"}), +		  __entry->wq) +); + +DEFINE_EVENT(btrfs__workqueue, btrfs_workqueue_alloc, + +	TP_PROTO(struct __btrfs_workqueue *wq, const char *name, int high), + +	TP_ARGS(wq, name, high) +); + +DECLARE_EVENT_CLASS(btrfs__workqueue_done, + +	TP_PROTO(struct __btrfs_workqueue *wq), + +	TP_ARGS(wq), + +	TP_STRUCT__entry( +		__field(	void *,	wq			) +	), + +	TP_fast_assign( +		__entry->wq		= wq; +	), + +	TP_printk("wq=%p", __entry->wq) +); + +DEFINE_EVENT(btrfs__workqueue_done, btrfs_workqueue_destroy, + +	TP_PROTO(struct __btrfs_workqueue *wq), + +	TP_ARGS(wq) +);  #endif /* _TRACE_BTRFS_H */ |