Btrfs: add work_struct information for workqueue tracepoint
authorLiu Bo <bo.li.liu@oracle.com>
Tue, 12 Aug 2014 08:33:17 +0000 (16:33 +0800)
committerChris Mason <clm@fb.com>
Wed, 17 Sep 2014 20:37:51 +0000 (13:37 -0700)
Kernel workqueue's tracepoints print the address of work_struct, while btrfs
workqueue's tracepoints print the address of btrfs_work.

We need a connection between this two, for example when debuging, we usually
grep an address in the trace output.  So it'd be better to also print
work_struct in btrfs workqueue's tracepoint.

Please note that we can only add this into those tracepoints whose work is still
available in memory because we need to reference the work.

Signed-off-by: Liu Bo <bo.li.liu@oracle.com>
Signed-off-by: Chris Mason <clm@fb.com>
include/trace/events/btrfs.h

index b8774b3f88d7ae83cfd067ec52b73365af3104f6..e3f3d10c664717d52cc4d97b4f54f9180e9b0217 100644 (file)
@@ -997,6 +997,7 @@ DECLARE_EVENT_CLASS(btrfs__work,
                __field(        void *, func                    )
                __field(        void *, ordered_func            )
                __field(        void *, ordered_free            )
+               __field(        void *, normal_work             )
        ),
 
        TP_fast_assign(
@@ -1005,11 +1006,13 @@ DECLARE_EVENT_CLASS(btrfs__work,
                __entry->func           = work->func;
                __entry->ordered_func   = work->ordered_func;
                __entry->ordered_free   = work->ordered_free;
+               __entry->normal_work    = &work->normal_work;
        ),
 
-       TP_printk("work=%p, wq=%p, func=%p, ordered_func=%p, ordered_free=%p",
-                 __entry->work, __entry->wq, __entry->func,
-                 __entry->ordered_func, __entry->ordered_free)
+       TP_printk("work=%p (normal_work=%p), wq=%p, func=%p, ordered_func=%p,"
+                 " ordered_free=%p",
+                 __entry->work, __entry->normal_work, __entry->wq,
+                  __entry->func, __entry->ordered_func, __entry->ordered_free)
 );
 
 /* For situiations that the work is freed */