aboutsummaryrefslogtreecommitdiffstats
path: root/include/trace
diff options
context:
space:
mode:
authorDaniel Vetter <daniel.vetter@ffwll.ch>2013-03-19 04:47:30 -0400
committerDaniel Vetter <daniel.vetter@ffwll.ch>2013-03-19 04:47:30 -0400
commit0d4a42f6bd298e826620585e766a154ab460617a (patch)
tree406d8f7778691d858dbe3e48e4bbb10e99c0a58a /include/trace
parentd62b4892f3d9f7dd2002e5309be10719d6805b0f (diff)
parenta937536b868b8369b98967929045f1df54234323 (diff)
Merge tag 'v3.9-rc3' into drm-intel-next-queued
Backmerge so that I can merge Imre Deak's coalesced sg entries fixes, which depend upon the new for_each_sg_page introduce in commit a321e91b6d73ed011ffceed384c40d2785cf723b Author: Imre Deak <imre.deak@intel.com> Date: Wed Feb 27 17:02:56 2013 -0800 lib/scatterlist: add simple page iterator The merge itself is just two trivial conflicts: Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'include/trace')
-rw-r--r--include/trace/events/block.h104
-rw-r--r--include/trace/events/ext4.h198
-rw-r--r--include/trace/events/jbd2.h106
-rw-r--r--include/trace/events/kvm.h2
-rw-r--r--include/trace/events/power.h92
-rw-r--r--include/trace/events/ras.h77
-rw-r--r--include/trace/events/rcu.h31
-rw-r--r--include/trace/events/workqueue.h10
-rw-r--r--include/trace/events/writeback.h116
9 files changed, 578 insertions, 158 deletions
diff --git a/include/trace/events/block.h b/include/trace/events/block.h
index 05c5e61f0a7c..9961726523d0 100644
--- a/include/trace/events/block.h
+++ b/include/trace/events/block.h
@@ -6,10 +6,61 @@
6 6
7#include <linux/blktrace_api.h> 7#include <linux/blktrace_api.h>
8#include <linux/blkdev.h> 8#include <linux/blkdev.h>
9#include <linux/buffer_head.h>
9#include <linux/tracepoint.h> 10#include <linux/tracepoint.h>
10 11
11#define RWBS_LEN 8 12#define RWBS_LEN 8
12 13
14DECLARE_EVENT_CLASS(block_buffer,
15
16 TP_PROTO(struct buffer_head *bh),
17
18 TP_ARGS(bh),
19
20 TP_STRUCT__entry (
21 __field( dev_t, dev )
22 __field( sector_t, sector )
23 __field( size_t, size )
24 ),
25
26 TP_fast_assign(
27 __entry->dev = bh->b_bdev->bd_dev;
28 __entry->sector = bh->b_blocknr;
29 __entry->size = bh->b_size;
30 ),
31
32 TP_printk("%d,%d sector=%llu size=%zu",
33 MAJOR(__entry->dev), MINOR(__entry->dev),
34 (unsigned long long)__entry->sector, __entry->size
35 )
36);
37
38/**
39 * block_touch_buffer - mark a buffer accessed
40 * @bh: buffer_head being touched
41 *
42 * Called from touch_buffer().
43 */
44DEFINE_EVENT(block_buffer, block_touch_buffer,
45
46 TP_PROTO(struct buffer_head *bh),
47
48 TP_ARGS(bh)
49);
50
51/**
52 * block_dirty_buffer - mark a buffer dirty
53 * @bh: buffer_head being dirtied
54 *
55 * Called from mark_buffer_dirty().
56 */
57DEFINE_EVENT(block_buffer, block_dirty_buffer,
58
59 TP_PROTO(struct buffer_head *bh),
60
61 TP_ARGS(bh)
62);
63
13DECLARE_EVENT_CLASS(block_rq_with_error, 64DECLARE_EVENT_CLASS(block_rq_with_error,
14 65
15 TP_PROTO(struct request_queue *q, struct request *rq), 66 TP_PROTO(struct request_queue *q, struct request *rq),
@@ -206,7 +257,6 @@ TRACE_EVENT(block_bio_bounce,
206 257
207/** 258/**
208 * block_bio_complete - completed all work on the block operation 259 * block_bio_complete - completed all work on the block operation
209 * @q: queue holding the block operation
210 * @bio: block operation completed 260 * @bio: block operation completed
211 * @error: io error value 261 * @error: io error value
212 * 262 *
@@ -215,9 +265,9 @@ TRACE_EVENT(block_bio_bounce,
215 */ 265 */
216TRACE_EVENT(block_bio_complete, 266TRACE_EVENT(block_bio_complete,
217 267
218 TP_PROTO(struct request_queue *q, struct bio *bio, int error), 268 TP_PROTO(struct bio *bio, int error),
219 269
220 TP_ARGS(q, bio, error), 270 TP_ARGS(bio, error),
221 271
222 TP_STRUCT__entry( 272 TP_STRUCT__entry(
223 __field( dev_t, dev ) 273 __field( dev_t, dev )
@@ -228,7 +278,8 @@ TRACE_EVENT(block_bio_complete,
228 ), 278 ),
229 279
230 TP_fast_assign( 280 TP_fast_assign(
231 __entry->dev = bio->bi_bdev->bd_dev; 281 __entry->dev = bio->bi_bdev ?
282 bio->bi_bdev->bd_dev : 0;
232 __entry->sector = bio->bi_sector; 283 __entry->sector = bio->bi_sector;
233 __entry->nr_sector = bio->bi_size >> 9; 284 __entry->nr_sector = bio->bi_size >> 9;
234 __entry->error = error; 285 __entry->error = error;
@@ -241,11 +292,11 @@ TRACE_EVENT(block_bio_complete,
241 __entry->nr_sector, __entry->error) 292 __entry->nr_sector, __entry->error)
242); 293);
243 294
244DECLARE_EVENT_CLASS(block_bio, 295DECLARE_EVENT_CLASS(block_bio_merge,
245 296
246 TP_PROTO(struct request_queue *q, struct bio *bio), 297 TP_PROTO(struct request_queue *q, struct request *rq, struct bio *bio),
247 298
248 TP_ARGS(q, bio), 299 TP_ARGS(q, rq, bio),
249 300
250 TP_STRUCT__entry( 301 TP_STRUCT__entry(
251 __field( dev_t, dev ) 302 __field( dev_t, dev )
@@ -272,31 +323,33 @@ DECLARE_EVENT_CLASS(block_bio,
272/** 323/**
273 * block_bio_backmerge - merging block operation to the end of an existing operation 324 * block_bio_backmerge - merging block operation to the end of an existing operation
274 * @q: queue holding operation 325 * @q: queue holding operation
326 * @rq: request bio is being merged into
275 * @bio: new block operation to merge 327 * @bio: new block operation to merge
276 * 328 *
277 * Merging block request @bio to the end of an existing block request 329 * Merging block request @bio to the end of an existing block request
278 * in queue @q. 330 * in queue @q.
279 */ 331 */
280DEFINE_EVENT(block_bio, block_bio_backmerge, 332DEFINE_EVENT(block_bio_merge, block_bio_backmerge,
281 333
282 TP_PROTO(struct request_queue *q, struct bio *bio), 334 TP_PROTO(struct request_queue *q, struct request *rq, struct bio *bio),
283 335
284 TP_ARGS(q, bio) 336 TP_ARGS(q, rq, bio)
285); 337);
286 338
287/** 339/**
288 * block_bio_frontmerge - merging block operation to the beginning of an existing operation 340 * block_bio_frontmerge - merging block operation to the beginning of an existing operation
289 * @q: queue holding operation 341 * @q: queue holding operation
342 * @rq: request bio is being merged into
290 * @bio: new block operation to merge 343 * @bio: new block operation to merge
291 * 344 *
292 * Merging block IO operation @bio to the beginning of an existing block 345 * Merging block IO operation @bio to the beginning of an existing block
293 * operation in queue @q. 346 * operation in queue @q.
294 */ 347 */
295DEFINE_EVENT(block_bio, block_bio_frontmerge, 348DEFINE_EVENT(block_bio_merge, block_bio_frontmerge,
296 349
297 TP_PROTO(struct request_queue *q, struct bio *bio), 350 TP_PROTO(struct request_queue *q, struct request *rq, struct bio *bio),
298 351
299 TP_ARGS(q, bio) 352 TP_ARGS(q, rq, bio)
300); 353);
301 354
302/** 355/**
@@ -306,11 +359,32 @@ DEFINE_EVENT(block_bio, block_bio_frontmerge,
306 * 359 *
307 * About to place the block IO operation @bio into queue @q. 360 * About to place the block IO operation @bio into queue @q.
308 */ 361 */
309DEFINE_EVENT(block_bio, block_bio_queue, 362TRACE_EVENT(block_bio_queue,
310 363
311 TP_PROTO(struct request_queue *q, struct bio *bio), 364 TP_PROTO(struct request_queue *q, struct bio *bio),
312 365
313 TP_ARGS(q, bio) 366 TP_ARGS(q, bio),
367
368 TP_STRUCT__entry(
369 __field( dev_t, dev )
370 __field( sector_t, sector )
371 __field( unsigned int, nr_sector )
372 __array( char, rwbs, RWBS_LEN )
373 __array( char, comm, TASK_COMM_LEN )
374 ),
375
376 TP_fast_assign(
377 __entry->dev = bio->bi_bdev->bd_dev;
378 __entry->sector = bio->bi_sector;
379 __entry->nr_sector = bio->bi_size >> 9;
380 blk_fill_rwbs(__entry->rwbs, bio->bi_rw, bio->bi_size);
381 memcpy(__entry->comm, current->comm, TASK_COMM_LEN);
382 ),
383
384 TP_printk("%d,%d %s %llu + %u [%s]",
385 MAJOR(__entry->dev), MINOR(__entry->dev), __entry->rwbs,
386 (unsigned long long)__entry->sector,
387 __entry->nr_sector, __entry->comm)
314); 388);
315 389
316DECLARE_EVENT_CLASS(block_get_rq, 390DECLARE_EVENT_CLASS(block_get_rq,
diff --git a/include/trace/events/ext4.h b/include/trace/events/ext4.h
index 7e8c36bc7082..4ee471003859 100644
--- a/include/trace/events/ext4.h
+++ b/include/trace/events/ext4.h
@@ -1324,6 +1324,31 @@ TRACE_EVENT(ext4_fallocate_exit,
1324 __entry->ret) 1324 __entry->ret)
1325); 1325);
1326 1326
1327TRACE_EVENT(ext4_punch_hole,
1328 TP_PROTO(struct inode *inode, loff_t offset, loff_t len),
1329
1330 TP_ARGS(inode, offset, len),
1331
1332 TP_STRUCT__entry(
1333 __field( dev_t, dev )
1334 __field( ino_t, ino )
1335 __field( loff_t, offset )
1336 __field( loff_t, len )
1337 ),
1338
1339 TP_fast_assign(
1340 __entry->dev = inode->i_sb->s_dev;
1341 __entry->ino = inode->i_ino;
1342 __entry->offset = offset;
1343 __entry->len = len;
1344 ),
1345
1346 TP_printk("dev %d,%d ino %lu offset %lld len %lld",
1347 MAJOR(__entry->dev), MINOR(__entry->dev),
1348 (unsigned long) __entry->ino,
1349 __entry->offset, __entry->len)
1350);
1351
1327TRACE_EVENT(ext4_unlink_enter, 1352TRACE_EVENT(ext4_unlink_enter,
1328 TP_PROTO(struct inode *parent, struct dentry *dentry), 1353 TP_PROTO(struct inode *parent, struct dentry *dentry),
1329 1354
@@ -2068,103 +2093,210 @@ TRACE_EVENT(ext4_ext_remove_space_done,
2068); 2093);
2069 2094
2070TRACE_EVENT(ext4_es_insert_extent, 2095TRACE_EVENT(ext4_es_insert_extent,
2071 TP_PROTO(struct inode *inode, ext4_lblk_t start, ext4_lblk_t len), 2096 TP_PROTO(struct inode *inode, struct extent_status *es),
2072 2097
2073 TP_ARGS(inode, start, len), 2098 TP_ARGS(inode, es),
2074 2099
2075 TP_STRUCT__entry( 2100 TP_STRUCT__entry(
2076 __field( dev_t, dev ) 2101 __field( dev_t, dev )
2077 __field( ino_t, ino ) 2102 __field( ino_t, ino )
2078 __field( loff_t, start ) 2103 __field( ext4_lblk_t, lblk )
2079 __field( loff_t, len ) 2104 __field( ext4_lblk_t, len )
2105 __field( ext4_fsblk_t, pblk )
2106 __field( unsigned long long, status )
2080 ), 2107 ),
2081 2108
2082 TP_fast_assign( 2109 TP_fast_assign(
2083 __entry->dev = inode->i_sb->s_dev; 2110 __entry->dev = inode->i_sb->s_dev;
2084 __entry->ino = inode->i_ino; 2111 __entry->ino = inode->i_ino;
2085 __entry->start = start; 2112 __entry->lblk = es->es_lblk;
2086 __entry->len = len; 2113 __entry->len = es->es_len;
2114 __entry->pblk = ext4_es_pblock(es);
2115 __entry->status = ext4_es_status(es);
2087 ), 2116 ),
2088 2117
2089 TP_printk("dev %d,%d ino %lu es [%lld/%lld)", 2118 TP_printk("dev %d,%d ino %lu es [%u/%u) mapped %llu status %llx",
2090 MAJOR(__entry->dev), MINOR(__entry->dev), 2119 MAJOR(__entry->dev), MINOR(__entry->dev),
2091 (unsigned long) __entry->ino, 2120 (unsigned long) __entry->ino,
2092 __entry->start, __entry->len) 2121 __entry->lblk, __entry->len,
2122 __entry->pblk, __entry->status)
2093); 2123);
2094 2124
2095TRACE_EVENT(ext4_es_remove_extent, 2125TRACE_EVENT(ext4_es_remove_extent,
2096 TP_PROTO(struct inode *inode, ext4_lblk_t start, ext4_lblk_t len), 2126 TP_PROTO(struct inode *inode, ext4_lblk_t lblk, ext4_lblk_t len),
2097 2127
2098 TP_ARGS(inode, start, len), 2128 TP_ARGS(inode, lblk, len),
2099 2129
2100 TP_STRUCT__entry( 2130 TP_STRUCT__entry(
2101 __field( dev_t, dev ) 2131 __field( dev_t, dev )
2102 __field( ino_t, ino ) 2132 __field( ino_t, ino )
2103 __field( loff_t, start ) 2133 __field( loff_t, lblk )
2104 __field( loff_t, len ) 2134 __field( loff_t, len )
2105 ), 2135 ),
2106 2136
2107 TP_fast_assign( 2137 TP_fast_assign(
2108 __entry->dev = inode->i_sb->s_dev; 2138 __entry->dev = inode->i_sb->s_dev;
2109 __entry->ino = inode->i_ino; 2139 __entry->ino = inode->i_ino;
2110 __entry->start = start; 2140 __entry->lblk = lblk;
2111 __entry->len = len; 2141 __entry->len = len;
2112 ), 2142 ),
2113 2143
2114 TP_printk("dev %d,%d ino %lu es [%lld/%lld)", 2144 TP_printk("dev %d,%d ino %lu es [%lld/%lld)",
2115 MAJOR(__entry->dev), MINOR(__entry->dev), 2145 MAJOR(__entry->dev), MINOR(__entry->dev),
2116 (unsigned long) __entry->ino, 2146 (unsigned long) __entry->ino,
2117 __entry->start, __entry->len) 2147 __entry->lblk, __entry->len)
2118); 2148);
2119 2149
2120TRACE_EVENT(ext4_es_find_extent_enter, 2150TRACE_EVENT(ext4_es_find_delayed_extent_enter,
2121 TP_PROTO(struct inode *inode, ext4_lblk_t start), 2151 TP_PROTO(struct inode *inode, ext4_lblk_t lblk),
2122 2152
2123 TP_ARGS(inode, start), 2153 TP_ARGS(inode, lblk),
2124 2154
2125 TP_STRUCT__entry( 2155 TP_STRUCT__entry(
2126 __field( dev_t, dev ) 2156 __field( dev_t, dev )
2127 __field( ino_t, ino ) 2157 __field( ino_t, ino )
2128 __field( ext4_lblk_t, start ) 2158 __field( ext4_lblk_t, lblk )
2129 ), 2159 ),
2130 2160
2131 TP_fast_assign( 2161 TP_fast_assign(
2132 __entry->dev = inode->i_sb->s_dev; 2162 __entry->dev = inode->i_sb->s_dev;
2133 __entry->ino = inode->i_ino; 2163 __entry->ino = inode->i_ino;
2134 __entry->start = start; 2164 __entry->lblk = lblk;
2135 ), 2165 ),
2136 2166
2137 TP_printk("dev %d,%d ino %lu start %u", 2167 TP_printk("dev %d,%d ino %lu lblk %u",
2138 MAJOR(__entry->dev), MINOR(__entry->dev), 2168 MAJOR(__entry->dev), MINOR(__entry->dev),
2139 (unsigned long) __entry->ino, __entry->start) 2169 (unsigned long) __entry->ino, __entry->lblk)
2140); 2170);
2141 2171
2142TRACE_EVENT(ext4_es_find_extent_exit, 2172TRACE_EVENT(ext4_es_find_delayed_extent_exit,
2143 TP_PROTO(struct inode *inode, struct extent_status *es, 2173 TP_PROTO(struct inode *inode, struct extent_status *es),
2144 ext4_lblk_t ret),
2145 2174
2146 TP_ARGS(inode, es, ret), 2175 TP_ARGS(inode, es),
2147 2176
2148 TP_STRUCT__entry( 2177 TP_STRUCT__entry(
2149 __field( dev_t, dev ) 2178 __field( dev_t, dev )
2150 __field( ino_t, ino ) 2179 __field( ino_t, ino )
2151 __field( ext4_lblk_t, start ) 2180 __field( ext4_lblk_t, lblk )
2152 __field( ext4_lblk_t, len ) 2181 __field( ext4_lblk_t, len )
2153 __field( ext4_lblk_t, ret ) 2182 __field( ext4_fsblk_t, pblk )
2183 __field( unsigned long long, status )
2154 ), 2184 ),
2155 2185
2156 TP_fast_assign( 2186 TP_fast_assign(
2157 __entry->dev = inode->i_sb->s_dev; 2187 __entry->dev = inode->i_sb->s_dev;
2158 __entry->ino = inode->i_ino; 2188 __entry->ino = inode->i_ino;
2159 __entry->start = es->start; 2189 __entry->lblk = es->es_lblk;
2160 __entry->len = es->len; 2190 __entry->len = es->es_len;
2161 __entry->ret = ret; 2191 __entry->pblk = ext4_es_pblock(es);
2192 __entry->status = ext4_es_status(es);
2162 ), 2193 ),
2163 2194
2164 TP_printk("dev %d,%d ino %lu es [%u/%u) ret %u", 2195 TP_printk("dev %d,%d ino %lu es [%u/%u) mapped %llu status %llx",
2165 MAJOR(__entry->dev), MINOR(__entry->dev), 2196 MAJOR(__entry->dev), MINOR(__entry->dev),
2166 (unsigned long) __entry->ino, 2197 (unsigned long) __entry->ino,
2167 __entry->start, __entry->len, __entry->ret) 2198 __entry->lblk, __entry->len,
2199 __entry->pblk, __entry->status)
2200);
2201
2202TRACE_EVENT(ext4_es_lookup_extent_enter,
2203 TP_PROTO(struct inode *inode, ext4_lblk_t lblk),
2204
2205 TP_ARGS(inode, lblk),
2206
2207 TP_STRUCT__entry(
2208 __field( dev_t, dev )
2209 __field( ino_t, ino )
2210 __field( ext4_lblk_t, lblk )
2211 ),
2212
2213 TP_fast_assign(
2214 __entry->dev = inode->i_sb->s_dev;
2215 __entry->ino = inode->i_ino;
2216 __entry->lblk = lblk;
2217 ),
2218
2219 TP_printk("dev %d,%d ino %lu lblk %u",
2220 MAJOR(__entry->dev), MINOR(__entry->dev),
2221 (unsigned long) __entry->ino, __entry->lblk)
2222);
2223
2224TRACE_EVENT(ext4_es_lookup_extent_exit,
2225 TP_PROTO(struct inode *inode, struct extent_status *es,
2226 int found),
2227
2228 TP_ARGS(inode, es, found),
2229
2230 TP_STRUCT__entry(
2231 __field( dev_t, dev )
2232 __field( ino_t, ino )
2233 __field( ext4_lblk_t, lblk )
2234 __field( ext4_lblk_t, len )
2235 __field( ext4_fsblk_t, pblk )
2236 __field( unsigned long long, status )
2237 __field( int, found )
2238 ),
2239
2240 TP_fast_assign(
2241 __entry->dev = inode->i_sb->s_dev;
2242 __entry->ino = inode->i_ino;
2243 __entry->lblk = es->es_lblk;
2244 __entry->len = es->es_len;
2245 __entry->pblk = ext4_es_pblock(es);
2246 __entry->status = ext4_es_status(es);
2247 __entry->found = found;
2248 ),
2249
2250 TP_printk("dev %d,%d ino %lu found %d [%u/%u) %llu %llx",
2251 MAJOR(__entry->dev), MINOR(__entry->dev),
2252 (unsigned long) __entry->ino, __entry->found,
2253 __entry->lblk, __entry->len,
2254 __entry->found ? __entry->pblk : 0,
2255 __entry->found ? __entry->status : 0)
2256);
2257
2258TRACE_EVENT(ext4_es_shrink_enter,
2259 TP_PROTO(struct super_block *sb, int nr_to_scan, int cache_cnt),
2260
2261 TP_ARGS(sb, nr_to_scan, cache_cnt),
2262
2263 TP_STRUCT__entry(
2264 __field( dev_t, dev )
2265 __field( int, nr_to_scan )
2266 __field( int, cache_cnt )
2267 ),
2268
2269 TP_fast_assign(
2270 __entry->dev = sb->s_dev;
2271 __entry->nr_to_scan = nr_to_scan;
2272 __entry->cache_cnt = cache_cnt;
2273 ),
2274
2275 TP_printk("dev %d,%d nr_to_scan %d cache_cnt %d",
2276 MAJOR(__entry->dev), MINOR(__entry->dev),
2277 __entry->nr_to_scan, __entry->cache_cnt)
2278);
2279
2280TRACE_EVENT(ext4_es_shrink_exit,
2281 TP_PROTO(struct super_block *sb, int shrunk_nr, int cache_cnt),
2282
2283 TP_ARGS(sb, shrunk_nr, cache_cnt),
2284
2285 TP_STRUCT__entry(
2286 __field( dev_t, dev )
2287 __field( int, shrunk_nr )
2288 __field( int, cache_cnt )
2289 ),
2290
2291 TP_fast_assign(
2292 __entry->dev = sb->s_dev;
2293 __entry->shrunk_nr = shrunk_nr;
2294 __entry->cache_cnt = cache_cnt;
2295 ),
2296
2297 TP_printk("dev %d,%d shrunk_nr %d cache_cnt %d",
2298 MAJOR(__entry->dev), MINOR(__entry->dev),
2299 __entry->shrunk_nr, __entry->cache_cnt)
2168); 2300);
2169 2301
2170#endif /* _TRACE_EXT4_H */ 2302#endif /* _TRACE_EXT4_H */
diff --git a/include/trace/events/jbd2.h b/include/trace/events/jbd2.h
index 127993dbf322..070df49e4a1d 100644
--- a/include/trace/events/jbd2.h
+++ b/include/trace/events/jbd2.h
@@ -132,6 +132,104 @@ TRACE_EVENT(jbd2_submit_inode_data,
132 (unsigned long) __entry->ino) 132 (unsigned long) __entry->ino)
133); 133);
134 134
135TRACE_EVENT(jbd2_handle_start,
136 TP_PROTO(dev_t dev, unsigned long tid, unsigned int type,
137 unsigned int line_no, int requested_blocks),
138
139 TP_ARGS(dev, tid, type, line_no, requested_blocks),
140
141 TP_STRUCT__entry(
142 __field( dev_t, dev )
143 __field( unsigned long, tid )
144 __field( unsigned int, type )
145 __field( unsigned int, line_no )
146 __field( int, requested_blocks)
147 ),
148
149 TP_fast_assign(
150 __entry->dev = dev;
151 __entry->tid = tid;
152 __entry->type = type;
153 __entry->line_no = line_no;
154 __entry->requested_blocks = requested_blocks;
155 ),
156
157 TP_printk("dev %d,%d tid %lu type %u line_no %u "
158 "requested_blocks %d",
159 MAJOR(__entry->dev), MINOR(__entry->dev), __entry->tid,
160 __entry->type, __entry->line_no, __entry->requested_blocks)
161);
162
163TRACE_EVENT(jbd2_handle_extend,
164 TP_PROTO(dev_t dev, unsigned long tid, unsigned int type,
165 unsigned int line_no, int buffer_credits,
166 int requested_blocks),
167
168 TP_ARGS(dev, tid, type, line_no, buffer_credits, requested_blocks),
169
170 TP_STRUCT__entry(
171 __field( dev_t, dev )
172 __field( unsigned long, tid )
173 __field( unsigned int, type )
174 __field( unsigned int, line_no )
175 __field( int, buffer_credits )
176 __field( int, requested_blocks)
177 ),
178
179 TP_fast_assign(
180 __entry->dev = dev;
181 __entry->tid = tid;
182 __entry->type = type;
183 __entry->line_no = line_no;
184 __entry->buffer_credits = buffer_credits;
185 __entry->requested_blocks = requested_blocks;
186 ),
187
188 TP_printk("dev %d,%d tid %lu type %u line_no %u "
189 "buffer_credits %d requested_blocks %d",
190 MAJOR(__entry->dev), MINOR(__entry->dev), __entry->tid,
191 __entry->type, __entry->line_no, __entry->buffer_credits,
192 __entry->requested_blocks)
193);
194
195TRACE_EVENT(jbd2_handle_stats,
196 TP_PROTO(dev_t dev, unsigned long tid, unsigned int type,
197 unsigned int line_no, int interval, int sync,
198 int requested_blocks, int dirtied_blocks),
199
200 TP_ARGS(dev, tid, type, line_no, interval, sync,
201 requested_blocks, dirtied_blocks),
202
203 TP_STRUCT__entry(
204 __field( dev_t, dev )
205 __field( unsigned long, tid )
206 __field( unsigned int, type )
207 __field( unsigned int, line_no )
208 __field( int, interval )
209 __field( int, sync )
210 __field( int, requested_blocks)
211 __field( int, dirtied_blocks )
212 ),
213
214 TP_fast_assign(
215 __entry->dev = dev;
216 __entry->tid = tid;
217 __entry->type = type;
218 __entry->line_no = line_no;
219 __entry->interval = interval;
220 __entry->sync = sync;
221 __entry->requested_blocks = requested_blocks;
222 __entry->dirtied_blocks = dirtied_blocks;
223 ),
224
225 TP_printk("dev %d,%d tid %lu type %u line_no %u interval %d "
226 "sync %d requested_blocks %d dirtied_blocks %d",
227 MAJOR(__entry->dev), MINOR(__entry->dev), __entry->tid,
228 __entry->type, __entry->line_no, __entry->interval,
229 __entry->sync, __entry->requested_blocks,
230 __entry->dirtied_blocks)
231);
232
135TRACE_EVENT(jbd2_run_stats, 233TRACE_EVENT(jbd2_run_stats,
136 TP_PROTO(dev_t dev, unsigned long tid, 234 TP_PROTO(dev_t dev, unsigned long tid,
137 struct transaction_run_stats_s *stats), 235 struct transaction_run_stats_s *stats),
@@ -142,6 +240,7 @@ TRACE_EVENT(jbd2_run_stats,
142 __field( dev_t, dev ) 240 __field( dev_t, dev )
143 __field( unsigned long, tid ) 241 __field( unsigned long, tid )
144 __field( unsigned long, wait ) 242 __field( unsigned long, wait )
243 __field( unsigned long, request_delay )
145 __field( unsigned long, running ) 244 __field( unsigned long, running )
146 __field( unsigned long, locked ) 245 __field( unsigned long, locked )
147 __field( unsigned long, flushing ) 246 __field( unsigned long, flushing )
@@ -155,6 +254,7 @@ TRACE_EVENT(jbd2_run_stats,
155 __entry->dev = dev; 254 __entry->dev = dev;
156 __entry->tid = tid; 255 __entry->tid = tid;
157 __entry->wait = stats->rs_wait; 256 __entry->wait = stats->rs_wait;
257 __entry->request_delay = stats->rs_request_delay;
158 __entry->running = stats->rs_running; 258 __entry->running = stats->rs_running;
159 __entry->locked = stats->rs_locked; 259 __entry->locked = stats->rs_locked;
160 __entry->flushing = stats->rs_flushing; 260 __entry->flushing = stats->rs_flushing;
@@ -164,10 +264,12 @@ TRACE_EVENT(jbd2_run_stats,
164 __entry->blocks_logged = stats->rs_blocks_logged; 264 __entry->blocks_logged = stats->rs_blocks_logged;
165 ), 265 ),
166 266
167 TP_printk("dev %d,%d tid %lu wait %u running %u locked %u flushing %u " 267 TP_printk("dev %d,%d tid %lu wait %u request_delay %u running %u "
168 "logging %u handle_count %u blocks %u blocks_logged %u", 268 "locked %u flushing %u logging %u handle_count %u "
269 "blocks %u blocks_logged %u",
169 MAJOR(__entry->dev), MINOR(__entry->dev), __entry->tid, 270 MAJOR(__entry->dev), MINOR(__entry->dev), __entry->tid,
170 jiffies_to_msecs(__entry->wait), 271 jiffies_to_msecs(__entry->wait),
272 jiffies_to_msecs(__entry->request_delay),
171 jiffies_to_msecs(__entry->running), 273 jiffies_to_msecs(__entry->running),
172 jiffies_to_msecs(__entry->locked), 274 jiffies_to_msecs(__entry->locked),
173 jiffies_to_msecs(__entry->flushing), 275 jiffies_to_msecs(__entry->flushing),
diff --git a/include/trace/events/kvm.h b/include/trace/events/kvm.h
index 7ef9e759f499..19911dddaeb7 100644
--- a/include/trace/events/kvm.h
+++ b/include/trace/events/kvm.h
@@ -14,7 +14,7 @@
14 ERSN(SHUTDOWN), ERSN(FAIL_ENTRY), ERSN(INTR), ERSN(SET_TPR), \ 14 ERSN(SHUTDOWN), ERSN(FAIL_ENTRY), ERSN(INTR), ERSN(SET_TPR), \
15 ERSN(TPR_ACCESS), ERSN(S390_SIEIC), ERSN(S390_RESET), ERSN(DCR),\ 15 ERSN(TPR_ACCESS), ERSN(S390_SIEIC), ERSN(S390_RESET), ERSN(DCR),\
16 ERSN(NMI), ERSN(INTERNAL_ERROR), ERSN(OSI), ERSN(PAPR_HCALL), \ 16 ERSN(NMI), ERSN(INTERNAL_ERROR), ERSN(OSI), ERSN(PAPR_HCALL), \
17 ERSN(S390_UCONTROL) 17 ERSN(S390_UCONTROL), ERSN(WATCHDOG), ERSN(S390_TSCH)
18 18
19TRACE_EVENT(kvm_userspace_exit, 19TRACE_EVENT(kvm_userspace_exit,
20 TP_PROTO(__u32 reason, int errno), 20 TP_PROTO(__u32 reason, int errno),
diff --git a/include/trace/events/power.h b/include/trace/events/power.h
index 0c9783841a30..427acab5d69a 100644
--- a/include/trace/events/power.h
+++ b/include/trace/events/power.h
@@ -99,98 +99,6 @@ DEFINE_EVENT(wakeup_source, wakeup_source_deactivate,
99 TP_ARGS(name, state) 99 TP_ARGS(name, state)
100); 100);
101 101
102#ifdef CONFIG_EVENT_POWER_TRACING_DEPRECATED
103
104/*
105 * The power events are used for cpuidle & suspend (power_start, power_end)
106 * and for cpufreq (power_frequency)
107 */
108DECLARE_EVENT_CLASS(power,
109
110 TP_PROTO(unsigned int type, unsigned int state, unsigned int cpu_id),
111
112 TP_ARGS(type, state, cpu_id),
113
114 TP_STRUCT__entry(
115 __field( u64, type )
116 __field( u64, state )
117 __field( u64, cpu_id )
118 ),
119
120 TP_fast_assign(
121 __entry->type = type;
122 __entry->state = state;
123 __entry->cpu_id = cpu_id;
124 ),
125
126 TP_printk("type=%lu state=%lu cpu_id=%lu", (unsigned long)__entry->type,
127 (unsigned long)__entry->state, (unsigned long)__entry->cpu_id)
128);
129
130DEFINE_EVENT(power, power_start,
131
132 TP_PROTO(unsigned int type, unsigned int state, unsigned int cpu_id),
133
134 TP_ARGS(type, state, cpu_id)
135);
136
137DEFINE_EVENT(power, power_frequency,
138
139 TP_PROTO(unsigned int type, unsigned int state, unsigned int cpu_id),
140
141 TP_ARGS(type, state, cpu_id)
142);
143
144TRACE_EVENT(power_end,
145
146 TP_PROTO(unsigned int cpu_id),
147
148 TP_ARGS(cpu_id),
149
150 TP_STRUCT__entry(
151 __field( u64, cpu_id )
152 ),
153
154 TP_fast_assign(
155 __entry->cpu_id = cpu_id;
156 ),
157
158 TP_printk("cpu_id=%lu", (unsigned long)__entry->cpu_id)
159
160);
161
162/* Deprecated dummy functions must be protected against multi-declartion */
163#ifndef _PWR_EVENT_AVOID_DOUBLE_DEFINING_DEPRECATED
164#define _PWR_EVENT_AVOID_DOUBLE_DEFINING_DEPRECATED
165
166enum {
167 POWER_NONE = 0,
168 POWER_CSTATE = 1,
169 POWER_PSTATE = 2,
170};
171#endif /* _PWR_EVENT_AVOID_DOUBLE_DEFINING_DEPRECATED */
172
173#else /* CONFIG_EVENT_POWER_TRACING_DEPRECATED */
174
175#ifndef _PWR_EVENT_AVOID_DOUBLE_DEFINING_DEPRECATED
176#define _PWR_EVENT_AVOID_DOUBLE_DEFINING_DEPRECATED
177enum {
178 POWER_NONE = 0,
179 POWER_CSTATE = 1,
180 POWER_PSTATE = 2,
181};
182
183/* These dummy declaration have to be ripped out when the deprecated
184 events get removed */
185static inline void trace_power_start(u64 type, u64 state, u64 cpuid) {};
186static inline void trace_power_end(u64 cpuid) {};
187static inline void trace_power_start_rcuidle(u64 type, u64 state, u64 cpuid) {};
188static inline void trace_power_end_rcuidle(u64 cpuid) {};
189static inline void trace_power_frequency(u64 type, u64 state, u64 cpuid) {};
190#endif /* _PWR_EVENT_AVOID_DOUBLE_DEFINING_DEPRECATED */
191
192#endif /* CONFIG_EVENT_POWER_TRACING_DEPRECATED */
193
194/* 102/*
195 * The clock events are used for clock enable/disable and for 103 * The clock events are used for clock enable/disable and for
196 * clock rate change 104 * clock rate change
diff --git a/include/trace/events/ras.h b/include/trace/events/ras.h
new file mode 100644
index 000000000000..88b878383797
--- /dev/null
+++ b/include/trace/events/ras.h
@@ -0,0 +1,77 @@
1#undef TRACE_SYSTEM
2#define TRACE_SYSTEM ras
3
4#if !defined(_TRACE_AER_H) || defined(TRACE_HEADER_MULTI_READ)
5#define _TRACE_AER_H
6
7#include <linux/tracepoint.h>
8#include <linux/edac.h>
9
10
11/*
12 * PCIe AER Trace event
13 *
14 * These events are generated when hardware detects a corrected or
15 * uncorrected event on a PCIe device. The event report has
16 * the following structure:
17 *
18 * char * dev_name - The name of the slot where the device resides
19 * ([domain:]bus:device.function).
20 * u32 status - Either the correctable or uncorrectable register
21 * indicating what error or errors have been seen
22 * u8 severity - error severity 0:NONFATAL 1:FATAL 2:CORRECTED
23 */
24
25#define aer_correctable_errors \
26 {BIT(0), "Receiver Error"}, \
27 {BIT(6), "Bad TLP"}, \
28 {BIT(7), "Bad DLLP"}, \
29 {BIT(8), "RELAY_NUM Rollover"}, \
30 {BIT(12), "Replay Timer Timeout"}, \
31 {BIT(13), "Advisory Non-Fatal"}
32
33#define aer_uncorrectable_errors \
34 {BIT(4), "Data Link Protocol"}, \
35 {BIT(12), "Poisoned TLP"}, \
36 {BIT(13), "Flow Control Protocol"}, \
37 {BIT(14), "Completion Timeout"}, \
38 {BIT(15), "Completer Abort"}, \
39 {BIT(16), "Unexpected Completion"}, \
40 {BIT(17), "Receiver Overflow"}, \
41 {BIT(18), "Malformed TLP"}, \
42 {BIT(19), "ECRC"}, \
43 {BIT(20), "Unsupported Request"}
44
45TRACE_EVENT(aer_event,
46 TP_PROTO(const char *dev_name,
47 const u32 status,
48 const u8 severity),
49
50 TP_ARGS(dev_name, status, severity),
51
52 TP_STRUCT__entry(
53 __string( dev_name, dev_name )
54 __field( u32, status )
55 __field( u8, severity )
56 ),
57
58 TP_fast_assign(
59 __assign_str(dev_name, dev_name);
60 __entry->status = status;
61 __entry->severity = severity;
62 ),
63
64 TP_printk("%s PCIe Bus Error: severity=%s, %s\n",
65 __get_str(dev_name),
66 __entry->severity == HW_EVENT_ERR_CORRECTED ? "Corrected" :
67 __entry->severity == HW_EVENT_ERR_FATAL ?
68 "Fatal" : "Uncorrected",
69 __entry->severity == HW_EVENT_ERR_CORRECTED ?
70 __print_flags(__entry->status, "|", aer_correctable_errors) :
71 __print_flags(__entry->status, "|", aer_uncorrectable_errors))
72);
73
74#endif /* _TRACE_AER_H */
75
76/* This part must be outside protection */
77#include <trace/define_trace.h>
diff --git a/include/trace/events/rcu.h b/include/trace/events/rcu.h
index d4f559b1ec34..1918e832da4f 100644
--- a/include/trace/events/rcu.h
+++ b/include/trace/events/rcu.h
@@ -44,8 +44,10 @@ TRACE_EVENT(rcu_utilization,
44 * of a new grace period or the end of an old grace period ("cpustart" 44 * of a new grace period or the end of an old grace period ("cpustart"
45 * and "cpuend", respectively), a CPU passing through a quiescent 45 * and "cpuend", respectively), a CPU passing through a quiescent
46 * state ("cpuqs"), a CPU coming online or going offline ("cpuonl" 46 * state ("cpuqs"), a CPU coming online or going offline ("cpuonl"
47 * and "cpuofl", respectively), and a CPU being kicked for being too 47 * and "cpuofl", respectively), a CPU being kicked for being too
48 * long in dyntick-idle mode ("kick"). 48 * long in dyntick-idle mode ("kick"), a CPU accelerating its new
49 * callbacks to RCU_NEXT_READY_TAIL ("AccReadyCB"), and a CPU
50 * accelerating its new callbacks to RCU_WAIT_TAIL ("AccWaitCB").
49 */ 51 */
50TRACE_EVENT(rcu_grace_period, 52TRACE_EVENT(rcu_grace_period,
51 53
@@ -393,7 +395,7 @@ TRACE_EVENT(rcu_kfree_callback,
393 */ 395 */
394TRACE_EVENT(rcu_batch_start, 396TRACE_EVENT(rcu_batch_start,
395 397
396 TP_PROTO(char *rcuname, long qlen_lazy, long qlen, int blimit), 398 TP_PROTO(char *rcuname, long qlen_lazy, long qlen, long blimit),
397 399
398 TP_ARGS(rcuname, qlen_lazy, qlen, blimit), 400 TP_ARGS(rcuname, qlen_lazy, qlen, blimit),
399 401
@@ -401,7 +403,7 @@ TRACE_EVENT(rcu_batch_start,
401 __field(char *, rcuname) 403 __field(char *, rcuname)
402 __field(long, qlen_lazy) 404 __field(long, qlen_lazy)
403 __field(long, qlen) 405 __field(long, qlen)
404 __field(int, blimit) 406 __field(long, blimit)
405 ), 407 ),
406 408
407 TP_fast_assign( 409 TP_fast_assign(
@@ -411,7 +413,7 @@ TRACE_EVENT(rcu_batch_start,
411 __entry->blimit = blimit; 413 __entry->blimit = blimit;
412 ), 414 ),
413 415
414 TP_printk("%s CBs=%ld/%ld bl=%d", 416 TP_printk("%s CBs=%ld/%ld bl=%ld",
415 __entry->rcuname, __entry->qlen_lazy, __entry->qlen, 417 __entry->rcuname, __entry->qlen_lazy, __entry->qlen,
416 __entry->blimit) 418 __entry->blimit)
417); 419);
@@ -523,22 +525,30 @@ TRACE_EVENT(rcu_batch_end,
523 */ 525 */
524TRACE_EVENT(rcu_torture_read, 526TRACE_EVENT(rcu_torture_read,
525 527
526 TP_PROTO(char *rcutorturename, struct rcu_head *rhp), 528 TP_PROTO(char *rcutorturename, struct rcu_head *rhp,
529 unsigned long secs, unsigned long c_old, unsigned long c),
527 530
528 TP_ARGS(rcutorturename, rhp), 531 TP_ARGS(rcutorturename, rhp, secs, c_old, c),
529 532
530 TP_STRUCT__entry( 533 TP_STRUCT__entry(
531 __field(char *, rcutorturename) 534 __field(char *, rcutorturename)
532 __field(struct rcu_head *, rhp) 535 __field(struct rcu_head *, rhp)
536 __field(unsigned long, secs)
537 __field(unsigned long, c_old)
538 __field(unsigned long, c)
533 ), 539 ),
534 540
535 TP_fast_assign( 541 TP_fast_assign(
536 __entry->rcutorturename = rcutorturename; 542 __entry->rcutorturename = rcutorturename;
537 __entry->rhp = rhp; 543 __entry->rhp = rhp;
544 __entry->secs = secs;
545 __entry->c_old = c_old;
546 __entry->c = c;
538 ), 547 ),
539 548
540 TP_printk("%s torture read %p", 549 TP_printk("%s torture read %p %luus c: %lu %lu",
541 __entry->rcutorturename, __entry->rhp) 550 __entry->rcutorturename, __entry->rhp,
551 __entry->secs, __entry->c_old, __entry->c)
542); 552);
543 553
544/* 554/*
@@ -608,7 +618,8 @@ TRACE_EVENT(rcu_barrier,
608#define trace_rcu_invoke_kfree_callback(rcuname, rhp, offset) do { } while (0) 618#define trace_rcu_invoke_kfree_callback(rcuname, rhp, offset) do { } while (0)
609#define trace_rcu_batch_end(rcuname, callbacks_invoked, cb, nr, iit, risk) \ 619#define trace_rcu_batch_end(rcuname, callbacks_invoked, cb, nr, iit, risk) \
610 do { } while (0) 620 do { } while (0)
611#define trace_rcu_torture_read(rcutorturename, rhp) do { } while (0) 621#define trace_rcu_torture_read(rcutorturename, rhp, secs, c_old, c) \
622 do { } while (0)
612#define trace_rcu_barrier(name, s, cpu, cnt, done) do { } while (0) 623#define trace_rcu_barrier(name, s, cpu, cnt, done) do { } while (0)
613 624
614#endif /* #else #ifdef CONFIG_RCU_TRACE */ 625#endif /* #else #ifdef CONFIG_RCU_TRACE */
diff --git a/include/trace/events/workqueue.h b/include/trace/events/workqueue.h
index f28d1b65f178..bf0e18ba6cfb 100644
--- a/include/trace/events/workqueue.h
+++ b/include/trace/events/workqueue.h
@@ -27,7 +27,7 @@ DECLARE_EVENT_CLASS(workqueue_work,
27/** 27/**
28 * workqueue_queue_work - called when a work gets queued 28 * workqueue_queue_work - called when a work gets queued
29 * @req_cpu: the requested cpu 29 * @req_cpu: the requested cpu
30 * @cwq: pointer to struct cpu_workqueue_struct 30 * @pwq: pointer to struct pool_workqueue
31 * @work: pointer to struct work_struct 31 * @work: pointer to struct work_struct
32 * 32 *
33 * This event occurs when a work is queued immediately or once a 33 * This event occurs when a work is queued immediately or once a
@@ -36,10 +36,10 @@ DECLARE_EVENT_CLASS(workqueue_work,
36 */ 36 */
37TRACE_EVENT(workqueue_queue_work, 37TRACE_EVENT(workqueue_queue_work,
38 38
39 TP_PROTO(unsigned int req_cpu, struct cpu_workqueue_struct *cwq, 39 TP_PROTO(unsigned int req_cpu, struct pool_workqueue *pwq,
40 struct work_struct *work), 40 struct work_struct *work),
41 41
42 TP_ARGS(req_cpu, cwq, work), 42 TP_ARGS(req_cpu, pwq, work),
43 43
44 TP_STRUCT__entry( 44 TP_STRUCT__entry(
45 __field( void *, work ) 45 __field( void *, work )
@@ -52,9 +52,9 @@ TRACE_EVENT(workqueue_queue_work,
52 TP_fast_assign( 52 TP_fast_assign(
53 __entry->work = work; 53 __entry->work = work;
54 __entry->function = work->func; 54 __entry->function = work->func;
55 __entry->workqueue = cwq->wq; 55 __entry->workqueue = pwq->wq;
56 __entry->req_cpu = req_cpu; 56 __entry->req_cpu = req_cpu;
57 __entry->cpu = cwq->pool->gcwq->cpu; 57 __entry->cpu = pwq->pool->cpu;
58 ), 58 ),
59 59
60 TP_printk("work struct=%p function=%pf workqueue=%p req_cpu=%u cpu=%u", 60 TP_printk("work struct=%p function=%pf workqueue=%p req_cpu=%u cpu=%u",
diff --git a/include/trace/events/writeback.h b/include/trace/events/writeback.h
index b453d92c2253..6a16fd2e70ed 100644
--- a/include/trace/events/writeback.h
+++ b/include/trace/events/writeback.h
@@ -32,6 +32,115 @@
32 32
33struct wb_writeback_work; 33struct wb_writeback_work;
34 34
35TRACE_EVENT(writeback_dirty_page,
36
37 TP_PROTO(struct page *page, struct address_space *mapping),
38
39 TP_ARGS(page, mapping),
40
41 TP_STRUCT__entry (
42 __array(char, name, 32)
43 __field(unsigned long, ino)
44 __field(pgoff_t, index)
45 ),
46
47 TP_fast_assign(
48 strncpy(__entry->name,
49 mapping ? dev_name(mapping->backing_dev_info->dev) : "(unknown)", 32);
50 __entry->ino = mapping ? mapping->host->i_ino : 0;
51 __entry->index = page->index;
52 ),
53
54 TP_printk("bdi %s: ino=%lu index=%lu",
55 __entry->name,
56 __entry->ino,
57 __entry->index
58 )
59);
60
61DECLARE_EVENT_CLASS(writeback_dirty_inode_template,
62
63 TP_PROTO(struct inode *inode, int flags),
64
65 TP_ARGS(inode, flags),
66
67 TP_STRUCT__entry (
68 __array(char, name, 32)
69 __field(unsigned long, ino)
70 __field(unsigned long, flags)
71 ),
72
73 TP_fast_assign(
74 struct backing_dev_info *bdi = inode->i_mapping->backing_dev_info;
75
76 /* may be called for files on pseudo FSes w/ unregistered bdi */
77 strncpy(__entry->name,
78 bdi->dev ? dev_name(bdi->dev) : "(unknown)", 32);
79 __entry->ino = inode->i_ino;
80 __entry->flags = flags;
81 ),
82
83 TP_printk("bdi %s: ino=%lu flags=%s",
84 __entry->name,
85 __entry->ino,
86 show_inode_state(__entry->flags)
87 )
88);
89
90DEFINE_EVENT(writeback_dirty_inode_template, writeback_dirty_inode_start,
91
92 TP_PROTO(struct inode *inode, int flags),
93
94 TP_ARGS(inode, flags)
95);
96
97DEFINE_EVENT(writeback_dirty_inode_template, writeback_dirty_inode,
98
99 TP_PROTO(struct inode *inode, int flags),
100
101 TP_ARGS(inode, flags)
102);
103
104DECLARE_EVENT_CLASS(writeback_write_inode_template,
105
106 TP_PROTO(struct inode *inode, struct writeback_control *wbc),
107
108 TP_ARGS(inode, wbc),
109
110 TP_STRUCT__entry (
111 __array(char, name, 32)
112 __field(unsigned long, ino)
113 __field(int, sync_mode)
114 ),
115
116 TP_fast_assign(
117 strncpy(__entry->name,
118 dev_name(inode->i_mapping->backing_dev_info->dev), 32);
119 __entry->ino = inode->i_ino;
120 __entry->sync_mode = wbc->sync_mode;
121 ),
122
123 TP_printk("bdi %s: ino=%lu sync_mode=%d",
124 __entry->name,
125 __entry->ino,
126 __entry->sync_mode
127 )
128);
129
130DEFINE_EVENT(writeback_write_inode_template, writeback_write_inode_start,
131
132 TP_PROTO(struct inode *inode, struct writeback_control *wbc),
133
134 TP_ARGS(inode, wbc)
135);
136
137DEFINE_EVENT(writeback_write_inode_template, writeback_write_inode,
138
139 TP_PROTO(struct inode *inode, struct writeback_control *wbc),
140
141 TP_ARGS(inode, wbc)
142);
143
35DECLARE_EVENT_CLASS(writeback_work_class, 144DECLARE_EVENT_CLASS(writeback_work_class,
36 TP_PROTO(struct backing_dev_info *bdi, struct wb_writeback_work *work), 145 TP_PROTO(struct backing_dev_info *bdi, struct wb_writeback_work *work),
37 TP_ARGS(bdi, work), 146 TP_ARGS(bdi, work),
@@ -479,6 +588,13 @@ DECLARE_EVENT_CLASS(writeback_single_inode_template,
479 ) 588 )
480); 589);
481 590
591DEFINE_EVENT(writeback_single_inode_template, writeback_single_inode_start,
592 TP_PROTO(struct inode *inode,
593 struct writeback_control *wbc,
594 unsigned long nr_to_write),
595 TP_ARGS(inode, wbc, nr_to_write)
596);
597
482DEFINE_EVENT(writeback_single_inode_template, writeback_single_inode, 598DEFINE_EVENT(writeback_single_inode_template, writeback_single_inode,
483 TP_PROTO(struct inode *inode, 599 TP_PROTO(struct inode *inode,
484 struct writeback_control *wbc, 600 struct writeback_control *wbc,