Fix: make writeback instrumentation build for 4.3 kernel
[lttng-modules.git] / instrumentation / events / lttng-module / writeback.h
CommitLineData
b87700e3
AG
1#undef TRACE_SYSTEM
2#define TRACE_SYSTEM writeback
3
3bc29f0a
MD
4#if !defined(LTTNG_TRACE_WRITEBACK_H) || defined(TRACE_HEADER_MULTI_READ)
5#define LTTNG_TRACE_WRITEBACK_H
b87700e3 6
3bc29f0a 7#include "../../../probes/lttng-tracepoint-event.h"
aa634cd1 8#include <linux/tracepoint.h>
b87700e3
AG
9#include <linux/backing-dev.h>
10#include <linux/writeback.h>
11#include <linux/version.h>
12
13#ifndef _TRACE_WRITEBACK_DEF_
14#define _TRACE_WRITEBACK_DEF_
9a8687aa
MD
15
16#if (LINUX_VERSION_CODE < KERNEL_VERSION(4,0,0))
b87700e3
AG
17static inline struct backing_dev_info *inode_to_bdi(struct inode *inode)
18{
19 struct super_block *sb = inode->i_sb;
20
21 if (strcmp(sb->s_type->name, "bdev") == 0)
22 return inode->i_mapping->backing_dev_info;
23
24 return sb->s_bdi;
25}
9a8687aa
MD
26#endif /* #if (LINUX_VERSION_CODE < KERNEL_VERSION(4,0,0)) */
27
b87700e3
AG
28#endif
29
9a8687aa
MD
30#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,0,0))
31#define show_inode_state(state) \
32 __print_flags(state, "|", \
33 {I_DIRTY_SYNC, "I_DIRTY_SYNC"}, \
34 {I_DIRTY_DATASYNC, "I_DIRTY_DATASYNC"}, \
35 {I_DIRTY_PAGES, "I_DIRTY_PAGES"}, \
36 {I_NEW, "I_NEW"}, \
37 {I_WILL_FREE, "I_WILL_FREE"}, \
38 {I_FREEING, "I_FREEING"}, \
39 {I_CLEAR, "I_CLEAR"}, \
40 {I_SYNC, "I_SYNC"}, \
41 {I_DIRTY_TIME, "I_DIRTY_TIME"}, \
42 {I_DIRTY_TIME_EXPIRED, "I_DIRTY_TIME_EXPIRED"}, \
43 {I_REFERENCED, "I_REFERENCED"} \
44 )
45#else /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,0,0)) */
b87700e3
AG
46#define show_inode_state(state) \
47 __print_flags(state, "|", \
48 {I_DIRTY_SYNC, "I_DIRTY_SYNC"}, \
49 {I_DIRTY_DATASYNC, "I_DIRTY_DATASYNC"}, \
50 {I_DIRTY_PAGES, "I_DIRTY_PAGES"}, \
51 {I_NEW, "I_NEW"}, \
52 {I_WILL_FREE, "I_WILL_FREE"}, \
53 {I_FREEING, "I_FREEING"}, \
54 {I_CLEAR, "I_CLEAR"}, \
55 {I_SYNC, "I_SYNC"}, \
56 {I_REFERENCED, "I_REFERENCED"} \
57 )
9a8687aa 58#endif /* #else #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,0,0)) */
b87700e3 59
9a8687aa
MD
60#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,0,0))
61
62LTTNG_TRACEPOINT_EVENT(writeback_dirty_page,
63 TP_PROTO(struct page *page, struct address_space *mapping),
64 TP_ARGS(page, mapping),
65 TP_STRUCT__entry (
66 __array_text(char, name, 32)
67 __field(unsigned long, ino)
68 __field(pgoff_t, index)
69 ),
70 TP_fast_assign(
71 tp_memcpy(name,
72 mapping ? dev_name(inode_to_bdi(mapping->host)->dev) : "(unknown)", 32)
73 tp_assign(ino, mapping ? mapping->host->i_ino : 0)
74 tp_assign(index, page->index)
75 ),
76 TP_printk("bdi %s: ino=%lu index=%lu",
77 __entry->name,
78 __entry->ino,
79 __entry->index
80 )
81)
82
83LTTNG_TRACEPOINT_EVENT_CLASS(writeback_dirty_inode_template,
84 TP_PROTO(struct inode *inode, int flags),
85 TP_ARGS(inode, flags),
86 TP_STRUCT__entry (
87 __array_text(char, name, 32)
88 __field(unsigned long, ino)
89 __field(unsigned long, state)
90 __field(unsigned long, flags)
91 ),
92 TP_fast_assign(
93 /* may be called for files on pseudo FSes w/ unregistered bdi */
94 tp_memcpy(name,
95 inode_to_bdi(inode)->dev ?
96 dev_name(inode_to_bdi(inode)->dev) : "(unknown)", 32)
97 tp_assign(ino, inode->i_ino)
98 tp_assign(state, inode->i_state)
99 tp_assign(flags, flags)
100 ),
101 TP_printk("bdi %s: ino=%lu flags=%s",
102 __entry->name,
103 __entry->ino,
104 show_inode_state(__entry->flags)
105 )
106)
107#define LTTNG_TRACEPOINT_EVENT_WRITEBACK_DIRTY_INODE_TEMPLATE(name) \
108LTTNG_TRACEPOINT_EVENT_INSTANCE(writeback_dirty_inode_template, name, \
109 TP_PROTO(struct inode *inode, int flags), \
110 TP_ARGS(inode, flags))
111LTTNG_TRACEPOINT_EVENT_WRITEBACK_DIRTY_INODE_TEMPLATE(writeback_dirty_inode_start)
112LTTNG_TRACEPOINT_EVENT_WRITEBACK_DIRTY_INODE_TEMPLATE(writeback_dirty_inode)
113LTTNG_TRACEPOINT_EVENT_WRITEBACK_DIRTY_INODE_TEMPLATE(writeback_mark_inode_dirty)
114
115LTTNG_TRACEPOINT_EVENT_CLASS(writeback_write_inode_template,
116 TP_PROTO(struct inode *inode, struct writeback_control *wbc),
117 TP_ARGS(inode, wbc),
118 TP_STRUCT__entry (
119 __array_text(char, name, 32)
120 __field(unsigned long, ino)
121 __field(int, sync_mode)
122 ),
123 TP_fast_assign(
124 tp_memcpy(name,
125 dev_name(inode_to_bdi(inode)->dev), 32)
126 tp_assign(ino, inode->i_ino)
127 tp_assign(sync_mode, wbc->sync_mode)
128 ),
129 TP_printk("bdi %s: ino=%lu sync_mode=%d",
130 __entry->name,
131 __entry->ino,
132 __entry->sync_mode
133 )
134)
135
136#define LTTNG_TRACEPOINT_EVENT_WRITEBACK_WRITE_INODE(name) \
137LTTNG_TRACEPOINT_EVENT_INSTANCE(writeback_write_inode_template, name, \
138 TP_PROTO(struct inode *inode, struct writeback_control *wbc), \
139 TP_ARGS(inode, wbc))
140LTTNG_TRACEPOINT_EVENT_WRITEBACK_WRITE_INODE(writeback_write_inode_start)
141LTTNG_TRACEPOINT_EVENT_WRITEBACK_WRITE_INODE(writeback_write_inode)
142
143#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,9,0))
144
aa634cd1
JD
145LTTNG_TRACEPOINT_EVENT(writeback_dirty_page,
146 TP_PROTO(struct page *page, struct address_space *mapping),
147 TP_ARGS(page, mapping),
148 TP_STRUCT__entry (
149 __array_text(char, name, 32)
150 __field(unsigned long, ino)
151 __field(pgoff_t, index)
152 ),
153 TP_fast_assign(
154 tp_memcpy(name,
155 mapping ? dev_name(mapping->backing_dev_info->dev) : "(unknown)", 32)
156 tp_assign(ino, mapping ? mapping->host->i_ino : 0)
157 tp_assign(index, page->index)
158 ),
159 TP_printk("bdi %s: ino=%lu index=%lu",
160 __entry->name,
161 __entry->ino,
162 __entry->index
163 )
164)
165
166LTTNG_TRACEPOINT_EVENT_CLASS(writeback_dirty_inode_template,
167 TP_PROTO(struct inode *inode, int flags),
168 TP_ARGS(inode, flags),
169 TP_STRUCT__entry (
170 __array_text(char, name, 32)
171 __field(unsigned long, ino)
172 __field(unsigned long, flags)
173 ),
174 TP_fast_assign(
175 /* may be called for files on pseudo FSes w/ unregistered bdi */
176 tp_memcpy(name,
177 inode->i_mapping->backing_dev_info->dev ?
178 dev_name(inode->i_mapping->backing_dev_info->dev) : "(unknown)", 32)
179 tp_assign(ino, inode->i_ino)
180 tp_assign(flags, flags)
181 ),
182 TP_printk("bdi %s: ino=%lu flags=%s",
183 __entry->name,
184 __entry->ino,
185 show_inode_state(__entry->flags)
186 )
187)
188#define LTTNG_TRACEPOINT_EVENT_WRITEBACK_DIRTY_INODE_TEMPLATE(name) \
189LTTNG_TRACEPOINT_EVENT_INSTANCE(writeback_dirty_inode_template, name, \
190 TP_PROTO(struct inode *inode, int flags), \
191 TP_ARGS(inode, flags))
192LTTNG_TRACEPOINT_EVENT_WRITEBACK_DIRTY_INODE_TEMPLATE(writeback_dirty_inode_start)
193LTTNG_TRACEPOINT_EVENT_WRITEBACK_DIRTY_INODE_TEMPLATE(writeback_dirty_inode)
194
195LTTNG_TRACEPOINT_EVENT_CLASS(writeback_write_inode_template,
196 TP_PROTO(struct inode *inode, struct writeback_control *wbc),
197 TP_ARGS(inode, wbc),
198 TP_STRUCT__entry (
199 __array_text(char, name, 32)
200 __field(unsigned long, ino)
201 __field(int, sync_mode)
202 ),
203 TP_fast_assign(
204 tp_memcpy(name,
205 dev_name(inode->i_mapping->backing_dev_info->dev), 32)
206 tp_assign(ino, inode->i_ino)
207 tp_assign(sync_mode, wbc->sync_mode)
208 ),
209 TP_printk("bdi %s: ino=%lu sync_mode=%d",
210 __entry->name,
211 __entry->ino,
212 __entry->sync_mode
213 )
214)
215
216#define LTTNG_TRACEPOINT_EVENT_WRITEBACK_WRITE_INODE(name) \
217LTTNG_TRACEPOINT_EVENT_INSTANCE(writeback_write_inode_template, name, \
218 TP_PROTO(struct inode *inode, struct writeback_control *wbc), \
219 TP_ARGS(inode, wbc))
220LTTNG_TRACEPOINT_EVENT_WRITEBACK_WRITE_INODE(writeback_write_inode_start)
221LTTNG_TRACEPOINT_EVENT_WRITEBACK_WRITE_INODE(writeback_write_inode)
9a8687aa 222
aa634cd1
JD
223#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(3,9,0)) */
224
ee33121c
MD
225#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,3,0))
226
227LTTNG_TRACEPOINT_EVENT_CLASS(writeback_work_class,
228 TP_PROTO(struct bdi_writeback *wb, struct wb_writeback_work *work),
229 TP_ARGS(wb, work),
92f0e09d
RV
230 TP_STRUCT__entry(
231 __array_text(char, name, 32)
232 ),
233 TP_fast_assign(
234 tp_memcpy(name, wb->bdi->dev ? dev_name(wb->bdi->dev) :
ee33121c 235 "(unknown)", 32)
92f0e09d
RV
236 ),
237 TP_printk("bdi %s",
238 __entry->name
ee33121c
MD
239 )
240)
241
242#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(4,0,0))
9a8687aa
MD
243
244LTTNG_TRACEPOINT_EVENT_CLASS(writeback_work_class,
245 TP_PROTO(struct backing_dev_info *bdi, struct wb_writeback_work *work),
246 TP_ARGS(bdi, work),
247 TP_STRUCT__entry(
248 __array_text(char, name, 32)
249 ),
250 TP_fast_assign(
251 tp_memcpy(name, bdi->dev ? dev_name(bdi->dev) :
252 "(unknown)", 32)
253 ),
254 TP_printk("bdi %s",
255 __entry->name
256 )
257)
258
259#else /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,0,0)) */
260
3bc29f0a 261LTTNG_TRACEPOINT_EVENT_CLASS(writeback_work_class,
b87700e3
AG
262 TP_PROTO(struct backing_dev_info *bdi, struct wb_writeback_work *work),
263 TP_ARGS(bdi, work),
264 TP_STRUCT__entry(
b4cf87e5 265 __array_text(char, name, 32)
b87700e3
AG
266 ),
267 TP_fast_assign(
268 tp_memcpy(name, dev_name(bdi->dev ? bdi->dev :
269 default_backing_dev_info.dev), 32)
b87700e3 270 ),
88dc2c97
MD
271 TP_printk("bdi %s",
272 __entry->name
b87700e3 273 )
b87700e3 274)
9a8687aa
MD
275
276#endif /* #else #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,0,0)) */
277
ee33121c
MD
278#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,3,0))
279
280#define LTTNG_TRACEPOINT_EVENT_WRITEBACK_WORK_INSTANCE(name) \
281LTTNG_TRACEPOINT_EVENT_INSTANCE(writeback_work_class, name, \
282 TP_PROTO(struct bdi_writeback *wb, struct wb_writeback_work *work), \
283 TP_ARGS(wb, work))
284
285#else /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,3,0)) */
286
3bc29f0a
MD
287#define LTTNG_TRACEPOINT_EVENT_WRITEBACK_WORK_INSTANCE(name) \
288LTTNG_TRACEPOINT_EVENT_INSTANCE(writeback_work_class, name, \
b87700e3
AG
289 TP_PROTO(struct backing_dev_info *bdi, struct wb_writeback_work *work), \
290 TP_ARGS(bdi, work))
ee33121c
MD
291
292#endif /* #else #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,3,0)) */
293
3bc29f0a
MD
294LTTNG_TRACEPOINT_EVENT_WRITEBACK_WORK_INSTANCE(writeback_nothread)
295LTTNG_TRACEPOINT_EVENT_WRITEBACK_WORK_INSTANCE(writeback_queue)
296LTTNG_TRACEPOINT_EVENT_WRITEBACK_WORK_INSTANCE(writeback_exec)
b87700e3 297#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0))
3bc29f0a
MD
298LTTNG_TRACEPOINT_EVENT_WRITEBACK_WORK_INSTANCE(writeback_start)
299LTTNG_TRACEPOINT_EVENT_WRITEBACK_WORK_INSTANCE(writeback_written)
300LTTNG_TRACEPOINT_EVENT_WRITEBACK_WORK_INSTANCE(writeback_wait)
b87700e3
AG
301#endif
302
3bc29f0a 303LTTNG_TRACEPOINT_EVENT(writeback_pages_written,
b87700e3
AG
304 TP_PROTO(long pages_written),
305 TP_ARGS(pages_written),
306 TP_STRUCT__entry(
307 __field(long, pages)
308 ),
309 TP_fast_assign(
310 tp_assign(pages, pages_written)
311 ),
312 TP_printk("%ld", __entry->pages)
313)
314
ee33121c
MD
315#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,3,0))
316
317LTTNG_TRACEPOINT_EVENT_CLASS(writeback_class,
318 TP_PROTO(struct bdi_writeback *wb),
319 TP_ARGS(wb),
92f0e09d
RV
320 TP_STRUCT__entry(
321 __array_text(char, name, 32)
322 ),
323 TP_fast_assign(
324 tp_memcpy(name, dev_name(wb->bdi->dev), 32)
325 ),
326 TP_printk("bdi %s",
327 __entry->name
ee33121c
MD
328 )
329)
330
331#undef DEFINE_WRITEBACK_EVENT
332#define DEFINE_WRITEBACK_EVENT(name) \
333LTTNG_TRACEPOINT_EVENT_INSTANCE(writeback_class, name, \
334 TP_PROTO(struct bdi_writeback *wb), \
335 TP_ARGS(wb))
336
337#define DEFINE_WRITEBACK_EVENT_MAP(name, map) \
338LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(writeback_class, name, map, \
339 TP_PROTO(struct bdi_writeback *wb), \
340 TP_ARGS(wb))
341
342LTTNG_TRACEPOINT_EVENT(writeback_bdi_register,
343 TP_PROTO(struct backing_dev_info *bdi),
344 TP_ARGS(bdi),
92f0e09d
RV
345 TP_STRUCT__entry(
346 __array_text(char, name, 32)
347 ),
348 TP_fast_assign(
349 tp_memcpy(name, dev_name(bdi->dev), 32)
350 ),
351 TP_printk("bdi %s",
352 __entry->name
ee33121c
MD
353 )
354)
355
356#else /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,3,0)) */
357
3bc29f0a 358LTTNG_TRACEPOINT_EVENT_CLASS(writeback_class,
b87700e3
AG
359 TP_PROTO(struct backing_dev_info *bdi),
360 TP_ARGS(bdi),
361 TP_STRUCT__entry(
b4cf87e5 362 __array_text(char, name, 32)
b87700e3
AG
363 ),
364 TP_fast_assign(
365 tp_memcpy(name, dev_name(bdi->dev), 32)
366 ),
367 TP_printk("bdi %s",
368 __entry->name
369 )
370)
ee33121c 371
59fecd6c 372#undef DEFINE_WRITEBACK_EVENT
b87700e3 373#define DEFINE_WRITEBACK_EVENT(name) \
3bc29f0a 374LTTNG_TRACEPOINT_EVENT_INSTANCE(writeback_class, name, \
b87700e3
AG
375 TP_PROTO(struct backing_dev_info *bdi), \
376 TP_ARGS(bdi))
377
9cf29d3e 378#define DEFINE_WRITEBACK_EVENT_MAP(name, map) \
3bc29f0a 379LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(writeback_class, name, map, \
9cf29d3e
MD
380 TP_PROTO(struct backing_dev_info *bdi), \
381 TP_ARGS(bdi))
382
ee33121c
MD
383DEFINE_WRITEBACK_EVENT(writeback_bdi_register)
384
385#endif /* #else #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,3,0)) */
386
b87700e3
AG
387DEFINE_WRITEBACK_EVENT(writeback_nowork)
388#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,38))
389DEFINE_WRITEBACK_EVENT(writeback_wake_background)
390#endif
391DEFINE_WRITEBACK_EVENT(writeback_wake_thread)
392DEFINE_WRITEBACK_EVENT(writeback_wake_forker_thread)
b87700e3
AG
393DEFINE_WRITEBACK_EVENT(writeback_bdi_unregister)
394DEFINE_WRITEBACK_EVENT(writeback_thread_start)
395DEFINE_WRITEBACK_EVENT(writeback_thread_stop)
396#if (LTTNG_KERNEL_RANGE(3,1,0, 3,2,0))
9cf29d3e
MD
397DEFINE_WRITEBACK_EVENT_MAP(balance_dirty_start, writeback_balance_dirty_start)
398DEFINE_WRITEBACK_EVENT_MAP(balance_dirty_wait, writeback_balance_dirty_wait)
399
3bc29f0a 400LTTNG_TRACEPOINT_EVENT_MAP(balance_dirty_written,
b87700e3 401
9cf29d3e 402 writeback_balance_dirty_written,
b87700e3
AG
403
404 TP_PROTO(struct backing_dev_info *bdi, int written),
405
406 TP_ARGS(bdi, written),
407
408 TP_STRUCT__entry(
409 __array(char, name, 32)
410 __field(int, written)
411 ),
412
413 TP_fast_assign(
414 tp_memcpy(name, dev_name(bdi->dev), 32)
415 tp_assign(written, written)
416 ),
417
418 TP_printk("bdi %s written %d",
419 __entry->name,
420 __entry->written
421 )
422)
423#endif
424
3bc29f0a 425LTTNG_TRACEPOINT_EVENT_CLASS(writeback_wbc_class,
b87700e3
AG
426 TP_PROTO(struct writeback_control *wbc, struct backing_dev_info *bdi),
427 TP_ARGS(wbc, bdi),
428 TP_STRUCT__entry(
b4cf87e5 429 __array_text(char, name, 32)
b87700e3
AG
430 __field(long, nr_to_write)
431 __field(long, pages_skipped)
432 __field(int, sync_mode)
433 __field(int, for_kupdate)
434 __field(int, for_background)
435 __field(int, for_reclaim)
436 __field(int, range_cyclic)
437#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,1,0))
438 __field(int, more_io)
439 __field(unsigned long, older_than_this)
440#endif
441 __field(long, range_start)
442 __field(long, range_end)
443 ),
444
445 TP_fast_assign(
446 tp_memcpy(name, dev_name(bdi->dev), 32)
447 tp_assign(nr_to_write, wbc->nr_to_write)
448 tp_assign(pages_skipped, wbc->pages_skipped)
449 tp_assign(sync_mode, wbc->sync_mode)
450 tp_assign(for_kupdate, wbc->for_kupdate)
451 tp_assign(for_background, wbc->for_background)
452 tp_assign(for_reclaim, wbc->for_reclaim)
453 tp_assign(range_cyclic, wbc->range_cyclic)
454#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,1,0))
455 tp_assign(more_io, wbc->more_io)
456 tp_assign(older_than_this, wbc->older_than_this ?
457 *wbc->older_than_this : 0)
458#endif
459 tp_assign(range_start, (long)wbc->range_start)
460 tp_assign(range_end, (long)wbc->range_end)
461 ),
462
463 TP_printk("bdi %s: towrt=%ld skip=%ld mode=%d kupd=%d "
464#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,1,0))
465 "bgrd=%d reclm=%d cyclic=%d more=%d older=0x%lx "
466#else
467 "bgrd=%d reclm=%d cyclic=%d "
468#endif
469 "start=0x%lx end=0x%lx",
470 __entry->name,
471 __entry->nr_to_write,
472 __entry->pages_skipped,
473 __entry->sync_mode,
474 __entry->for_kupdate,
475 __entry->for_background,
476 __entry->for_reclaim,
477 __entry->range_cyclic,
478#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,1,0))
479 __entry->more_io,
480 __entry->older_than_this,
481#endif
482 __entry->range_start,
483 __entry->range_end)
484)
485
9cf29d3e 486#undef DEFINE_WBC_EVENT
3bc29f0a
MD
487#define LTTNG_TRACEPOINT_EVENT_WBC_INSTANCE(name, map) \
488LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(writeback_wbc_class, name, map, \
b87700e3
AG
489 TP_PROTO(struct writeback_control *wbc, struct backing_dev_info *bdi), \
490 TP_ARGS(wbc, bdi))
491#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,1,0))
3bc29f0a
MD
492LTTNG_TRACEPOINT_EVENT_WBC_INSTANCE(wbc_writeback_start, writeback_wbc_writeback_start)
493LTTNG_TRACEPOINT_EVENT_WBC_INSTANCE(wbc_writeback_written, writeback_wbc_writeback_written)
494LTTNG_TRACEPOINT_EVENT_WBC_INSTANCE(wbc_writeback_wait, writeback_wbc_writeback_wait)
495LTTNG_TRACEPOINT_EVENT_WBC_INSTANCE(wbc_balance_dirty_start, writeback_wbc_balance_dirty_start)
496LTTNG_TRACEPOINT_EVENT_WBC_INSTANCE(wbc_balance_dirty_written, writeback_wbc_balance_dirty_written)
497LTTNG_TRACEPOINT_EVENT_WBC_INSTANCE(wbc_balance_dirty_wait, writeback_wbc_balance_dirty_wait)
b87700e3 498#endif
3bc29f0a 499LTTNG_TRACEPOINT_EVENT_WBC_INSTANCE(wbc_writepage, writeback_wbc_writepage)
b87700e3
AG
500
501#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0))
3bc29f0a 502LTTNG_TRACEPOINT_EVENT(writeback_queue_io,
b87700e3
AG
503 TP_PROTO(struct bdi_writeback *wb,
504#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0))
505 struct wb_writeback_work *work,
506#else
507 unsigned long *older_than_this,
508#endif
509 int moved),
510#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0))
511 TP_ARGS(wb, work, moved),
512#else
513 TP_ARGS(wb, older_than_this, moved),
514#endif
515 TP_STRUCT__entry(
516 __array(char, name, 32)
88dc2c97
MD
517#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0))
518#else
b87700e3
AG
519 __field(unsigned long, older)
520 __field(long, age)
b87700e3 521#endif
88dc2c97 522 __field(int, moved)
b87700e3
AG
523 ),
524 TP_fast_assign(
525 tp_memcpy(name, dev_name(wb->bdi->dev), 32)
526#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0))
b87700e3
AG
527#else
528 tp_assign(older, older_than_this ? *older_than_this : 0)
529 tp_assign(age, older_than_this ?
530 (jiffies - *older_than_this) * 1000 / HZ : -1)
531#endif
532 tp_assign(moved, moved)
b87700e3
AG
533 ),
534#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0))
88dc2c97 535 TP_printk("bdi %s: enqueue=%d",
b87700e3 536 __entry->name,
b87700e3 537 __entry->moved,
b87700e3
AG
538 )
539#else
540 TP_printk("bdi %s: older=%lu age=%ld enqueue=%d",
541 __entry->name,
542 __entry->older, /* older_than_this in jiffies */
543 __entry->age, /* older_than_this in relative milliseconds */
544 __entry->moved
545 )
546#endif
547)
548
3bc29f0a 549LTTNG_TRACEPOINT_EVENT_MAP(global_dirty_state,
9cf29d3e
MD
550
551 writeback_global_dirty_state,
b87700e3
AG
552
553 TP_PROTO(unsigned long background_thresh,
554 unsigned long dirty_thresh
555 ),
556
557 TP_ARGS(background_thresh,
558 dirty_thresh
559 ),
560
561 TP_STRUCT__entry(
562 __field(unsigned long, nr_dirty)
563 __field(unsigned long, nr_writeback)
564 __field(unsigned long, nr_unstable)
565 __field(unsigned long, background_thresh)
566 __field(unsigned long, dirty_thresh)
567 __field(unsigned long, dirty_limit)
568 __field(unsigned long, nr_dirtied)
569 __field(unsigned long, nr_written)
570 ),
571
572 TP_fast_assign(
573 tp_assign(nr_dirty, global_page_state(NR_FILE_DIRTY))
574 tp_assign(nr_writeback, global_page_state(NR_WRITEBACK))
575 tp_assign(nr_unstable, global_page_state(NR_UNSTABLE_NFS))
576 tp_assign(nr_dirtied, global_page_state(NR_DIRTIED))
577 tp_assign(nr_written, global_page_state(NR_WRITTEN))
578 tp_assign(background_thresh, background_thresh)
579 tp_assign(dirty_thresh, dirty_thresh)
580 tp_assign(dirty_limit, global_dirty_limit)
581 ),
582
583 TP_printk("dirty=%lu writeback=%lu unstable=%lu "
584 "bg_thresh=%lu thresh=%lu limit=%lu "
585 "dirtied=%lu written=%lu",
586 __entry->nr_dirty,
587 __entry->nr_writeback,
588 __entry->nr_unstable,
589 __entry->background_thresh,
590 __entry->dirty_thresh,
591 __entry->dirty_limit,
592 __entry->nr_dirtied,
593 __entry->nr_written
594 )
595)
596#endif
597
598#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0))
599
600#define KBps(x) ((x) << (PAGE_SHIFT - 10))
601
ee33121c
MD
602#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,3,0))
603
604LTTNG_TRACEPOINT_EVENT_MAP(bdi_dirty_ratelimit,
605
606 writeback_bdi_dirty_ratelimit,
607
608 TP_PROTO(struct bdi_writeback *wb,
609 unsigned long dirty_rate,
610 unsigned long task_ratelimit),
611
612 TP_ARGS(wb, dirty_rate, task_ratelimit),
613
92f0e09d
RV
614 TP_STRUCT__entry(
615 __array(char, bdi, 32)
616 __field(unsigned long, write_bw)
617 __field(unsigned long, avg_write_bw)
618 __field(unsigned long, dirty_rate)
619 __field(unsigned long, dirty_ratelimit)
620 __field(unsigned long, task_ratelimit)
621 __field(unsigned long, balanced_dirty_ratelimit)
622 ),
623
624 TP_fast_assign(
625 tp_memcpy(bdi, dev_name(wb->bdi->dev), 32)
626 tp_assign(write_bw, KBps(wb->bdi->wb.write_bandwidth))
627 tp_assign(avg_write_bw, KBps(wb->bdi->wb.avg_write_bandwidth))
628 tp_assign(dirty_rate, KBps(dirty_rate))
629 tp_assign(dirty_ratelimit, KBps(wb->bdi->wb.dirty_ratelimit))
630 tp_assign(task_ratelimit, KBps(task_ratelimit))
631 tp_assign(balanced_dirty_ratelimit,
ee33121c 632 KBps(wb->bdi->wb.balanced_dirty_ratelimit))
92f0e09d
RV
633 ),
634
635 TP_printk("bdi %s: "
636 "write_bw=%lu awrite_bw=%lu dirty_rate=%lu "
637 "dirty_ratelimit=%lu task_ratelimit=%lu "
638 "balanced_dirty_ratelimit=%lu",
639 __entry->bdi,
640 __entry->write_bw, /* write bandwidth */
641 __entry->avg_write_bw, /* avg write bandwidth */
642 __entry->dirty_rate, /* bdi dirty rate */
643 __entry->dirty_ratelimit, /* base ratelimit */
644 __entry->task_ratelimit, /* ratelimit with position control */
645 __entry->balanced_dirty_ratelimit /* the balanced ratelimit */
ee33121c
MD
646 )
647)
648
649#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(4,2,0))
0e648dfb
MJ
650
651LTTNG_TRACEPOINT_EVENT_MAP(bdi_dirty_ratelimit,
652
653 writeback_bdi_dirty_ratelimit,
654
655 TP_PROTO(struct backing_dev_info *bdi,
656 unsigned long dirty_rate,
657 unsigned long task_ratelimit),
658
659 TP_ARGS(bdi, dirty_rate, task_ratelimit),
660
661 TP_STRUCT__entry(
662 __array(char, bdi, 32)
663 __field(unsigned long, write_bw)
664 __field(unsigned long, avg_write_bw)
665 __field(unsigned long, dirty_rate)
666 __field(unsigned long, dirty_ratelimit)
667 __field(unsigned long, task_ratelimit)
668 __field(unsigned long, balanced_dirty_ratelimit)
669 ),
670
671 TP_fast_assign(
672 tp_memcpy(bdi, dev_name(bdi->dev), 32)
673 tp_assign(write_bw, KBps(bdi->wb.write_bandwidth))
674 tp_assign(avg_write_bw, KBps(bdi->wb.avg_write_bandwidth))
675 tp_assign(dirty_rate, KBps(dirty_rate))
676 tp_assign(dirty_ratelimit, KBps(bdi->wb.dirty_ratelimit))
677 tp_assign(task_ratelimit, KBps(task_ratelimit))
678 tp_assign(balanced_dirty_ratelimit,
679 KBps(bdi->wb.balanced_dirty_ratelimit))
680 ),
681
682 TP_printk("bdi %s: "
683 "write_bw=%lu awrite_bw=%lu dirty_rate=%lu "
684 "dirty_ratelimit=%lu task_ratelimit=%lu "
685 "balanced_dirty_ratelimit=%lu",
686 __entry->bdi,
687 __entry->write_bw, /* write bandwidth */
688 __entry->avg_write_bw, /* avg write bandwidth */
689 __entry->dirty_rate, /* bdi dirty rate */
690 __entry->dirty_ratelimit, /* base ratelimit */
691 __entry->task_ratelimit, /* ratelimit with position control */
692 __entry->balanced_dirty_ratelimit /* the balanced ratelimit */
693 )
694)
695
696#else
697
3bc29f0a 698LTTNG_TRACEPOINT_EVENT_MAP(bdi_dirty_ratelimit,
9cf29d3e
MD
699
700 writeback_bdi_dirty_ratelimit,
b87700e3
AG
701
702 TP_PROTO(struct backing_dev_info *bdi,
703 unsigned long dirty_rate,
704 unsigned long task_ratelimit),
705
706 TP_ARGS(bdi, dirty_rate, task_ratelimit),
707
708 TP_STRUCT__entry(
709 __array(char, bdi, 32)
710 __field(unsigned long, write_bw)
711 __field(unsigned long, avg_write_bw)
712 __field(unsigned long, dirty_rate)
713 __field(unsigned long, dirty_ratelimit)
714 __field(unsigned long, task_ratelimit)
715 __field(unsigned long, balanced_dirty_ratelimit)
716 ),
717
718 TP_fast_assign(
719 tp_memcpy(bdi, dev_name(bdi->dev), 32)
720 tp_assign(write_bw, KBps(bdi->write_bandwidth))
721 tp_assign(avg_write_bw, KBps(bdi->avg_write_bandwidth))
722 tp_assign(dirty_rate, KBps(dirty_rate))
723 tp_assign(dirty_ratelimit, KBps(bdi->dirty_ratelimit))
724 tp_assign(task_ratelimit, KBps(task_ratelimit))
725 tp_assign(balanced_dirty_ratelimit,
726 KBps(bdi->balanced_dirty_ratelimit))
727 ),
728
729 TP_printk("bdi %s: "
730 "write_bw=%lu awrite_bw=%lu dirty_rate=%lu "
731 "dirty_ratelimit=%lu task_ratelimit=%lu "
732 "balanced_dirty_ratelimit=%lu",
733 __entry->bdi,
734 __entry->write_bw, /* write bandwidth */
735 __entry->avg_write_bw, /* avg write bandwidth */
736 __entry->dirty_rate, /* bdi dirty rate */
737 __entry->dirty_ratelimit, /* base ratelimit */
738 __entry->task_ratelimit, /* ratelimit with position control */
739 __entry->balanced_dirty_ratelimit /* the balanced ratelimit */
740 )
741)
742
0e648dfb
MJ
743#endif
744
ee33121c
MD
745#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,3,0))
746
747LTTNG_TRACEPOINT_EVENT_MAP(balance_dirty_pages,
748
749 writeback_balance_dirty_pages,
750
751 TP_PROTO(struct bdi_writeback *wb,
752 unsigned long thresh,
753 unsigned long bg_thresh,
754 unsigned long dirty,
755 unsigned long bdi_thresh,
756 unsigned long bdi_dirty,
757 unsigned long dirty_ratelimit,
758 unsigned long task_ratelimit,
759 unsigned long dirtied,
760 unsigned long period,
761 long pause,
762 unsigned long start_time),
763
764 TP_ARGS(wb, thresh, bg_thresh, dirty, bdi_thresh, bdi_dirty,
765 dirty_ratelimit, task_ratelimit,
766 dirtied, period, pause, start_time
767 ),
768
92f0e09d
RV
769 TP_STRUCT__entry(
770 __array( char, bdi, 32)
771 __field(unsigned long, limit)
772 __field(unsigned long, setpoint)
773 __field(unsigned long, dirty)
774 __field(unsigned long, bdi_setpoint)
775 __field(unsigned long, bdi_dirty)
776 __field(unsigned long, dirty_ratelimit)
777 __field(unsigned long, task_ratelimit)
778 __field(unsigned int, dirtied)
779 __field(unsigned int, dirtied_pause)
780 __field(unsigned long, paused)
781 __field( long, pause)
782 __field(unsigned long, period)
783 __field( long, think)
784 ),
785
786 TP_fast_assign(
787 tp_memcpy(bdi, dev_name(wb->bdi->dev), 32)
788 tp_assign(limit, global_dirty_limit)
789 tp_assign(setpoint,
ee33121c 790 (global_dirty_limit + (thresh + bg_thresh) / 2) / 2)
92f0e09d
RV
791 tp_assign(dirty, dirty)
792 tp_assign(bdi_setpoint,
ee33121c 793 ((global_dirty_limit + (thresh + bg_thresh) / 2) / 2) *
92f0e09d
RV
794 bdi_thresh / (thresh + 1))
795 tp_assign(bdi_dirty, bdi_dirty)
796 tp_assign(dirty_ratelimit, KBps(dirty_ratelimit))
797 tp_assign(task_ratelimit, KBps(task_ratelimit))
798 tp_assign(dirtied, dirtied)
799 tp_assign(dirtied_pause, current->nr_dirtied_pause)
800 tp_assign(think, current->dirty_paused_when == 0 ? 0 :
801 (long)(jiffies - current->dirty_paused_when) * 1000/HZ)
802 tp_assign(period, period * 1000 / HZ)
803 tp_assign(pause, pause * 1000 / HZ)
804 tp_assign(paused, (jiffies - start_time) * 1000 / HZ)
805 ),
806
807
808 TP_printk("bdi %s: "
809 "limit=%lu setpoint=%lu dirty=%lu "
810 "bdi_setpoint=%lu bdi_dirty=%lu "
811 "dirty_ratelimit=%lu task_ratelimit=%lu "
812 "dirtied=%u dirtied_pause=%u "
813 "paused=%lu pause=%ld period=%lu think=%ld",
814 __entry->bdi,
815 __entry->limit,
816 __entry->setpoint,
817 __entry->dirty,
818 __entry->bdi_setpoint,
819 __entry->bdi_dirty,
820 __entry->dirty_ratelimit,
821 __entry->task_ratelimit,
822 __entry->dirtied,
823 __entry->dirtied_pause,
824 __entry->paused, /* ms */
825 __entry->pause, /* ms */
826 __entry->period, /* ms */
827 __entry->think /* ms */
828 )
ee33121c
MD
829)
830
831#else /* #if LINUX_VERSION_CODE >= KERNEL_VERSION(4,3,0)) */
832
3bc29f0a 833LTTNG_TRACEPOINT_EVENT_MAP(balance_dirty_pages,
9cf29d3e
MD
834
835 writeback_balance_dirty_pages,
b87700e3
AG
836
837 TP_PROTO(struct backing_dev_info *bdi,
838 unsigned long thresh,
839 unsigned long bg_thresh,
840 unsigned long dirty,
841 unsigned long bdi_thresh,
842 unsigned long bdi_dirty,
843 unsigned long dirty_ratelimit,
844 unsigned long task_ratelimit,
845 unsigned long dirtied,
846#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
847 unsigned long period,
848#endif
849 long pause,
850 unsigned long start_time),
851
852 TP_ARGS(bdi, thresh, bg_thresh, dirty, bdi_thresh, bdi_dirty,
853 dirty_ratelimit, task_ratelimit,
854#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
855 dirtied, period, pause, start_time),
856#else
857 dirtied, pause, start_time),
858#endif
859 TP_STRUCT__entry(
860 __array( char, bdi, 32)
861 __field(unsigned long, limit)
862 __field(unsigned long, setpoint)
863 __field(unsigned long, dirty)
864 __field(unsigned long, bdi_setpoint)
865 __field(unsigned long, bdi_dirty)
866 __field(unsigned long, dirty_ratelimit)
867 __field(unsigned long, task_ratelimit)
868 __field(unsigned int, dirtied)
869 __field(unsigned int, dirtied_pause)
870 __field(unsigned long, paused)
871 __field( long, pause)
872#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
873 __field(unsigned long, period)
874 __field( long, think)
875#endif
876 ),
877
878 TP_fast_assign(
879 tp_memcpy(bdi, dev_name(bdi->dev), 32)
880 tp_assign(limit, global_dirty_limit)
881 tp_assign(setpoint,
882 (global_dirty_limit + (thresh + bg_thresh) / 2) / 2)
883 tp_assign(dirty, dirty)
884 tp_assign(bdi_setpoint,
885 ((global_dirty_limit + (thresh + bg_thresh) / 2) / 2) *
886 bdi_thresh / (thresh + 1))
887 tp_assign(bdi_dirty, bdi_dirty)
888 tp_assign(dirty_ratelimit, KBps(dirty_ratelimit))
889 tp_assign(task_ratelimit, KBps(task_ratelimit))
890 tp_assign(dirtied, dirtied)
891 tp_assign(dirtied_pause, current->nr_dirtied_pause)
892#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
893 tp_assign(think, current->dirty_paused_when == 0 ? 0 :
894 (long)(jiffies - current->dirty_paused_when) * 1000/HZ)
895 tp_assign(period, period * 1000 / HZ)
896#endif
897 tp_assign(pause, pause * 1000 / HZ)
898 tp_assign(paused, (jiffies - start_time) * 1000 / HZ)
899 ),
900
901
902#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
903 TP_printk("bdi %s: "
904 "limit=%lu setpoint=%lu dirty=%lu "
905 "bdi_setpoint=%lu bdi_dirty=%lu "
906 "dirty_ratelimit=%lu task_ratelimit=%lu "
907 "dirtied=%u dirtied_pause=%u "
908 "paused=%lu pause=%ld period=%lu think=%ld",
909 __entry->bdi,
910 __entry->limit,
911 __entry->setpoint,
912 __entry->dirty,
913 __entry->bdi_setpoint,
914 __entry->bdi_dirty,
915 __entry->dirty_ratelimit,
916 __entry->task_ratelimit,
917 __entry->dirtied,
918 __entry->dirtied_pause,
919 __entry->paused, /* ms */
920 __entry->pause, /* ms */
921 __entry->period, /* ms */
922 __entry->think /* ms */
923 )
924#else
925 TP_printk("bdi %s: "
926 "limit=%lu setpoint=%lu dirty=%lu "
927 "bdi_setpoint=%lu bdi_dirty=%lu "
928 "dirty_ratelimit=%lu task_ratelimit=%lu "
929 "dirtied=%u dirtied_pause=%u "
930 "paused=%lu pause=%ld",
931 __entry->bdi,
932 __entry->limit,
933 __entry->setpoint,
934 __entry->dirty,
935 __entry->bdi_setpoint,
936 __entry->bdi_dirty,
937 __entry->dirty_ratelimit,
938 __entry->task_ratelimit,
939 __entry->dirtied,
940 __entry->dirtied_pause,
941 __entry->paused, /* ms */
942 __entry->pause /* ms */
943 )
944#endif
945)
ee33121c
MD
946#endif /* #else #if LINUX_VERSION_CODE >= KERNEL_VERSION(4,3,0)) */
947
948#endif /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0)) */
b87700e3
AG
949
950#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0))
3bc29f0a 951LTTNG_TRACEPOINT_EVENT(writeback_sb_inodes_requeue,
b87700e3
AG
952
953 TP_PROTO(struct inode *inode),
954 TP_ARGS(inode),
955
956 TP_STRUCT__entry(
b4cf87e5 957 __array_text(char, name, 32)
b87700e3
AG
958 __field(unsigned long, ino)
959 __field(unsigned long, state)
960 __field(unsigned long, dirtied_when)
961 ),
962
963 TP_fast_assign(
964 tp_memcpy(name, dev_name(inode_to_bdi(inode)->dev), 32)
965 tp_assign(ino, inode->i_ino)
966 tp_assign(state, inode->i_state)
967 tp_assign(dirtied_when, inode->dirtied_when)
968 ),
969
970 TP_printk("bdi %s: ino=%lu state=%s dirtied_when=%lu age=%lu",
971 __entry->name,
972 __entry->ino,
973 show_inode_state(__entry->state),
974 __entry->dirtied_when,
975 (jiffies - __entry->dirtied_when) / HZ
976 )
977)
978#endif
979
980#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
3bc29f0a 981LTTNG_TRACEPOINT_EVENT_CLASS(writeback_congest_waited_template,
b87700e3
AG
982
983 TP_PROTO(unsigned int usec_timeout, unsigned int usec_delayed),
984
985 TP_ARGS(usec_timeout, usec_delayed),
986
987 TP_STRUCT__entry(
988 __field( unsigned int, usec_timeout )
989 __field( unsigned int, usec_delayed )
990 ),
991
992 TP_fast_assign(
993 tp_assign(usec_timeout, usec_timeout)
994 tp_assign(usec_delayed, usec_delayed)
995 ),
996
997 TP_printk("usec_timeout=%u usec_delayed=%u",
998 __entry->usec_timeout,
999 __entry->usec_delayed)
1000)
1001
3bc29f0a 1002LTTNG_TRACEPOINT_EVENT_INSTANCE(writeback_congest_waited_template, writeback_congestion_wait,
b87700e3
AG
1003
1004 TP_PROTO(unsigned int usec_timeout, unsigned int usec_delayed),
1005
1006 TP_ARGS(usec_timeout, usec_delayed)
1007)
1008
3bc29f0a 1009LTTNG_TRACEPOINT_EVENT_INSTANCE(writeback_congest_waited_template, writeback_wait_iff_congested,
b87700e3
AG
1010
1011 TP_PROTO(unsigned int usec_timeout, unsigned int usec_delayed),
1012
1013 TP_ARGS(usec_timeout, usec_delayed)
1014)
1015#endif
1016
1017#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0))
3bc29f0a 1018LTTNG_TRACEPOINT_EVENT_CLASS(writeback_single_inode_template,
b87700e3
AG
1019
1020 TP_PROTO(struct inode *inode,
1021 struct writeback_control *wbc,
1022 unsigned long nr_to_write
1023 ),
1024
1025 TP_ARGS(inode, wbc, nr_to_write),
1026
1027 TP_STRUCT__entry(
b4cf87e5 1028 __array_text(char, name, 32)
b87700e3
AG
1029 __field(unsigned long, ino)
1030 __field(unsigned long, state)
1031 __field(unsigned long, dirtied_when)
1032 __field(unsigned long, writeback_index)
1033 __field(long, nr_to_write)
1034 __field(unsigned long, wrote)
1035 ),
1036
1037 TP_fast_assign(
1038 tp_memcpy(name, dev_name(inode_to_bdi(inode)->dev), 32)
1039 tp_assign(ino, inode->i_ino)
1040 tp_assign(state, inode->i_state)
1041 tp_assign(dirtied_when, inode->dirtied_when)
1042 tp_assign(writeback_index, inode->i_mapping->writeback_index)
1043 tp_assign(nr_to_write, nr_to_write)
1044 tp_assign(wrote, nr_to_write - wbc->nr_to_write)
1045 ),
1046
1047 TP_printk("bdi %s: ino=%lu state=%s dirtied_when=%lu age=%lu "
1048 "index=%lu to_write=%ld wrote=%lu",
1049 __entry->name,
1050 __entry->ino,
1051 show_inode_state(__entry->state),
1052 __entry->dirtied_when,
1053 (jiffies - __entry->dirtied_when) / HZ,
1054 __entry->writeback_index,
1055 __entry->nr_to_write,
1056 __entry->wrote
1057 )
1058)
1059
1060#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,5,0))
3bc29f0a 1061LTTNG_TRACEPOINT_EVENT_INSTANCE(writeback_single_inode_template, writeback_single_inode_requeue,
b87700e3
AG
1062 TP_PROTO(struct inode *inode,
1063 struct writeback_control *wbc,
1064 unsigned long nr_to_write),
1065 TP_ARGS(inode, wbc, nr_to_write)
1066)
1067#endif
1068
3bc29f0a 1069LTTNG_TRACEPOINT_EVENT_INSTANCE(writeback_single_inode_template, writeback_single_inode,
b87700e3
AG
1070 TP_PROTO(struct inode *inode,
1071 struct writeback_control *wbc,
1072 unsigned long nr_to_write),
1073 TP_ARGS(inode, wbc, nr_to_write)
1074)
1075#endif
1076
3bc29f0a 1077#endif /* LTTNG_TRACE_WRITEBACK_H */
b87700e3
AG
1078
1079/* This part must be outside protection */
1080#include "../../../probes/define_trace.h"
This page took 0.070353 seconds and 4 git commands to generate.