0001
0002
0003
0004
0005
0006
0007 #undef TRACE_SYSTEM
0008 #define TRACE_SYSTEM fscache
0009
0010 #if !defined(_TRACE_FSCACHE_H) || defined(TRACE_HEADER_MULTI_READ)
0011 #define _TRACE_FSCACHE_H
0012
0013 #include <linux/fscache.h>
0014 #include <linux/tracepoint.h>
0015
0016
0017
0018
0019 #ifndef __FSCACHE_DECLARE_TRACE_ENUMS_ONCE_ONLY
0020 #define __FSCACHE_DECLARE_TRACE_ENUMS_ONCE_ONLY
0021
0022 enum fscache_cache_trace {
0023 fscache_cache_collision,
0024 fscache_cache_get_acquire,
0025 fscache_cache_new_acquire,
0026 fscache_cache_put_alloc_volume,
0027 fscache_cache_put_cache,
0028 fscache_cache_put_prep_failed,
0029 fscache_cache_put_relinquish,
0030 fscache_cache_put_volume,
0031 };
0032
0033 enum fscache_volume_trace {
0034 fscache_volume_collision,
0035 fscache_volume_get_cookie,
0036 fscache_volume_get_create_work,
0037 fscache_volume_get_hash_collision,
0038 fscache_volume_free,
0039 fscache_volume_new_acquire,
0040 fscache_volume_put_cookie,
0041 fscache_volume_put_create_work,
0042 fscache_volume_put_hash_collision,
0043 fscache_volume_put_relinquish,
0044 fscache_volume_see_create_work,
0045 fscache_volume_see_hash_wake,
0046 fscache_volume_wait_create_work,
0047 };
0048
0049 enum fscache_cookie_trace {
0050 fscache_cookie_collision,
0051 fscache_cookie_discard,
0052 fscache_cookie_failed,
0053 fscache_cookie_get_attach_object,
0054 fscache_cookie_get_end_access,
0055 fscache_cookie_get_hash_collision,
0056 fscache_cookie_get_inval_work,
0057 fscache_cookie_get_lru,
0058 fscache_cookie_get_use_work,
0059 fscache_cookie_new_acquire,
0060 fscache_cookie_put_hash_collision,
0061 fscache_cookie_put_lru,
0062 fscache_cookie_put_object,
0063 fscache_cookie_put_over_queued,
0064 fscache_cookie_put_relinquish,
0065 fscache_cookie_put_withdrawn,
0066 fscache_cookie_put_work,
0067 fscache_cookie_see_active,
0068 fscache_cookie_see_lru_discard,
0069 fscache_cookie_see_lru_do_one,
0070 fscache_cookie_see_relinquish,
0071 fscache_cookie_see_withdraw,
0072 fscache_cookie_see_work,
0073 };
0074
0075 enum fscache_active_trace {
0076 fscache_active_use,
0077 fscache_active_use_modify,
0078 fscache_active_unuse,
0079 };
0080
0081 enum fscache_access_trace {
0082 fscache_access_acquire_volume,
0083 fscache_access_acquire_volume_end,
0084 fscache_access_cache_pin,
0085 fscache_access_cache_unpin,
0086 fscache_access_invalidate_cookie,
0087 fscache_access_invalidate_cookie_end,
0088 fscache_access_io_end,
0089 fscache_access_io_not_live,
0090 fscache_access_io_read,
0091 fscache_access_io_resize,
0092 fscache_access_io_wait,
0093 fscache_access_io_write,
0094 fscache_access_lookup_cookie,
0095 fscache_access_lookup_cookie_end,
0096 fscache_access_lookup_cookie_end_failed,
0097 fscache_access_relinquish_volume,
0098 fscache_access_relinquish_volume_end,
0099 fscache_access_unlive,
0100 };
0101
0102 #endif
0103
0104
0105
0106
0107 #define fscache_cache_traces \
0108 EM(fscache_cache_collision, "*COLLIDE*") \
0109 EM(fscache_cache_get_acquire, "GET acq ") \
0110 EM(fscache_cache_new_acquire, "NEW acq ") \
0111 EM(fscache_cache_put_alloc_volume, "PUT alvol") \
0112 EM(fscache_cache_put_cache, "PUT cache") \
0113 EM(fscache_cache_put_prep_failed, "PUT pfail") \
0114 EM(fscache_cache_put_relinquish, "PUT relnq") \
0115 E_(fscache_cache_put_volume, "PUT vol ")
0116
0117 #define fscache_volume_traces \
0118 EM(fscache_volume_collision, "*COLLIDE*") \
0119 EM(fscache_volume_get_cookie, "GET cook ") \
0120 EM(fscache_volume_get_create_work, "GET creat") \
0121 EM(fscache_volume_get_hash_collision, "GET hcoll") \
0122 EM(fscache_volume_free, "FREE ") \
0123 EM(fscache_volume_new_acquire, "NEW acq ") \
0124 EM(fscache_volume_put_cookie, "PUT cook ") \
0125 EM(fscache_volume_put_create_work, "PUT creat") \
0126 EM(fscache_volume_put_hash_collision, "PUT hcoll") \
0127 EM(fscache_volume_put_relinquish, "PUT relnq") \
0128 EM(fscache_volume_see_create_work, "SEE creat") \
0129 EM(fscache_volume_see_hash_wake, "SEE hwake") \
0130 E_(fscache_volume_wait_create_work, "WAIT crea")
0131
0132 #define fscache_cookie_traces \
0133 EM(fscache_cookie_collision, "*COLLIDE*") \
0134 EM(fscache_cookie_discard, "DISCARD ") \
0135 EM(fscache_cookie_failed, "FAILED ") \
0136 EM(fscache_cookie_get_attach_object, "GET attch") \
0137 EM(fscache_cookie_get_hash_collision, "GET hcoll") \
0138 EM(fscache_cookie_get_end_access, "GQ endac") \
0139 EM(fscache_cookie_get_inval_work, "GQ inval") \
0140 EM(fscache_cookie_get_lru, "GET lru ") \
0141 EM(fscache_cookie_get_use_work, "GQ use ") \
0142 EM(fscache_cookie_new_acquire, "NEW acq ") \
0143 EM(fscache_cookie_put_hash_collision, "PUT hcoll") \
0144 EM(fscache_cookie_put_lru, "PUT lru ") \
0145 EM(fscache_cookie_put_object, "PUT obj ") \
0146 EM(fscache_cookie_put_over_queued, "PQ overq") \
0147 EM(fscache_cookie_put_relinquish, "PUT relnq") \
0148 EM(fscache_cookie_put_withdrawn, "PUT wthdn") \
0149 EM(fscache_cookie_put_work, "PQ work ") \
0150 EM(fscache_cookie_see_active, "- activ") \
0151 EM(fscache_cookie_see_lru_discard, "- x-lru") \
0152 EM(fscache_cookie_see_lru_do_one, "- lrudo") \
0153 EM(fscache_cookie_see_relinquish, "- x-rlq") \
0154 EM(fscache_cookie_see_withdraw, "- x-wth") \
0155 E_(fscache_cookie_see_work, "- work ")
0156
0157 #define fscache_active_traces \
0158 EM(fscache_active_use, "USE ") \
0159 EM(fscache_active_use_modify, "USE-m ") \
0160 E_(fscache_active_unuse, "UNUSE ")
0161
0162 #define fscache_access_traces \
0163 EM(fscache_access_acquire_volume, "BEGIN acq_vol") \
0164 EM(fscache_access_acquire_volume_end, "END acq_vol") \
0165 EM(fscache_access_cache_pin, "PIN cache ") \
0166 EM(fscache_access_cache_unpin, "UNPIN cache ") \
0167 EM(fscache_access_invalidate_cookie, "BEGIN inval ") \
0168 EM(fscache_access_invalidate_cookie_end,"END inval ") \
0169 EM(fscache_access_io_end, "END io ") \
0170 EM(fscache_access_io_not_live, "END io_notl") \
0171 EM(fscache_access_io_read, "BEGIN io_read") \
0172 EM(fscache_access_io_resize, "BEGIN io_resz") \
0173 EM(fscache_access_io_wait, "WAIT io ") \
0174 EM(fscache_access_io_write, "BEGIN io_writ") \
0175 EM(fscache_access_lookup_cookie, "BEGIN lookup ") \
0176 EM(fscache_access_lookup_cookie_end, "END lookup ") \
0177 EM(fscache_access_lookup_cookie_end_failed,"END lookupf") \
0178 EM(fscache_access_relinquish_volume, "BEGIN rlq_vol") \
0179 EM(fscache_access_relinquish_volume_end,"END rlq_vol") \
0180 E_(fscache_access_unlive, "END unlive ")
0181
0182
0183
0184
0185 #undef EM
0186 #undef E_
0187 #define EM(a, b) TRACE_DEFINE_ENUM(a);
0188 #define E_(a, b) TRACE_DEFINE_ENUM(a);
0189
0190 fscache_cache_traces;
0191 fscache_volume_traces;
0192 fscache_cookie_traces;
0193 fscache_access_traces;
0194
0195
0196
0197
0198
0199 #undef EM
0200 #undef E_
0201 #define EM(a, b) { a, b },
0202 #define E_(a, b) { a, b }
0203
0204
0205 TRACE_EVENT(fscache_cache,
0206 TP_PROTO(unsigned int cache_debug_id,
0207 int usage,
0208 enum fscache_cache_trace where),
0209
0210 TP_ARGS(cache_debug_id, usage, where),
0211
0212 TP_STRUCT__entry(
0213 __field(unsigned int, cache )
0214 __field(int, usage )
0215 __field(enum fscache_cache_trace, where )
0216 ),
0217
0218 TP_fast_assign(
0219 __entry->cache = cache_debug_id;
0220 __entry->usage = usage;
0221 __entry->where = where;
0222 ),
0223
0224 TP_printk("C=%08x %s r=%d",
0225 __entry->cache,
0226 __print_symbolic(__entry->where, fscache_cache_traces),
0227 __entry->usage)
0228 );
0229
0230 TRACE_EVENT(fscache_volume,
0231 TP_PROTO(unsigned int volume_debug_id,
0232 int usage,
0233 enum fscache_volume_trace where),
0234
0235 TP_ARGS(volume_debug_id, usage, where),
0236
0237 TP_STRUCT__entry(
0238 __field(unsigned int, volume )
0239 __field(int, usage )
0240 __field(enum fscache_volume_trace, where )
0241 ),
0242
0243 TP_fast_assign(
0244 __entry->volume = volume_debug_id;
0245 __entry->usage = usage;
0246 __entry->where = where;
0247 ),
0248
0249 TP_printk("V=%08x %s u=%d",
0250 __entry->volume,
0251 __print_symbolic(__entry->where, fscache_volume_traces),
0252 __entry->usage)
0253 );
0254
0255 TRACE_EVENT(fscache_cookie,
0256 TP_PROTO(unsigned int cookie_debug_id,
0257 int ref,
0258 enum fscache_cookie_trace where),
0259
0260 TP_ARGS(cookie_debug_id, ref, where),
0261
0262 TP_STRUCT__entry(
0263 __field(unsigned int, cookie )
0264 __field(int, ref )
0265 __field(enum fscache_cookie_trace, where )
0266 ),
0267
0268 TP_fast_assign(
0269 __entry->cookie = cookie_debug_id;
0270 __entry->ref = ref;
0271 __entry->where = where;
0272 ),
0273
0274 TP_printk("c=%08x %s r=%d",
0275 __entry->cookie,
0276 __print_symbolic(__entry->where, fscache_cookie_traces),
0277 __entry->ref)
0278 );
0279
0280 TRACE_EVENT(fscache_active,
0281 TP_PROTO(unsigned int cookie_debug_id,
0282 int ref,
0283 int n_active,
0284 int n_accesses,
0285 enum fscache_active_trace why),
0286
0287 TP_ARGS(cookie_debug_id, ref, n_active, n_accesses, why),
0288
0289 TP_STRUCT__entry(
0290 __field(unsigned int, cookie )
0291 __field(int, ref )
0292 __field(int, n_active )
0293 __field(int, n_accesses )
0294 __field(enum fscache_active_trace, why )
0295 ),
0296
0297 TP_fast_assign(
0298 __entry->cookie = cookie_debug_id;
0299 __entry->ref = ref;
0300 __entry->n_active = n_active;
0301 __entry->n_accesses = n_accesses;
0302 __entry->why = why;
0303 ),
0304
0305 TP_printk("c=%08x %s r=%d a=%d c=%d",
0306 __entry->cookie,
0307 __print_symbolic(__entry->why, fscache_active_traces),
0308 __entry->ref,
0309 __entry->n_accesses,
0310 __entry->n_active)
0311 );
0312
0313 TRACE_EVENT(fscache_access_cache,
0314 TP_PROTO(unsigned int cache_debug_id,
0315 int ref,
0316 int n_accesses,
0317 enum fscache_access_trace why),
0318
0319 TP_ARGS(cache_debug_id, ref, n_accesses, why),
0320
0321 TP_STRUCT__entry(
0322 __field(unsigned int, cache )
0323 __field(int, ref )
0324 __field(int, n_accesses )
0325 __field(enum fscache_access_trace, why )
0326 ),
0327
0328 TP_fast_assign(
0329 __entry->cache = cache_debug_id;
0330 __entry->ref = ref;
0331 __entry->n_accesses = n_accesses;
0332 __entry->why = why;
0333 ),
0334
0335 TP_printk("C=%08x %s r=%d a=%d",
0336 __entry->cache,
0337 __print_symbolic(__entry->why, fscache_access_traces),
0338 __entry->ref,
0339 __entry->n_accesses)
0340 );
0341
0342 TRACE_EVENT(fscache_access_volume,
0343 TP_PROTO(unsigned int volume_debug_id,
0344 unsigned int cookie_debug_id,
0345 int ref,
0346 int n_accesses,
0347 enum fscache_access_trace why),
0348
0349 TP_ARGS(volume_debug_id, cookie_debug_id, ref, n_accesses, why),
0350
0351 TP_STRUCT__entry(
0352 __field(unsigned int, volume )
0353 __field(unsigned int, cookie )
0354 __field(int, ref )
0355 __field(int, n_accesses )
0356 __field(enum fscache_access_trace, why )
0357 ),
0358
0359 TP_fast_assign(
0360 __entry->volume = volume_debug_id;
0361 __entry->cookie = cookie_debug_id;
0362 __entry->ref = ref;
0363 __entry->n_accesses = n_accesses;
0364 __entry->why = why;
0365 ),
0366
0367 TP_printk("V=%08x c=%08x %s r=%d a=%d",
0368 __entry->volume,
0369 __entry->cookie,
0370 __print_symbolic(__entry->why, fscache_access_traces),
0371 __entry->ref,
0372 __entry->n_accesses)
0373 );
0374
0375 TRACE_EVENT(fscache_access,
0376 TP_PROTO(unsigned int cookie_debug_id,
0377 int ref,
0378 int n_accesses,
0379 enum fscache_access_trace why),
0380
0381 TP_ARGS(cookie_debug_id, ref, n_accesses, why),
0382
0383 TP_STRUCT__entry(
0384 __field(unsigned int, cookie )
0385 __field(int, ref )
0386 __field(int, n_accesses )
0387 __field(enum fscache_access_trace, why )
0388 ),
0389
0390 TP_fast_assign(
0391 __entry->cookie = cookie_debug_id;
0392 __entry->ref = ref;
0393 __entry->n_accesses = n_accesses;
0394 __entry->why = why;
0395 ),
0396
0397 TP_printk("c=%08x %s r=%d a=%d",
0398 __entry->cookie,
0399 __print_symbolic(__entry->why, fscache_access_traces),
0400 __entry->ref,
0401 __entry->n_accesses)
0402 );
0403
0404 TRACE_EVENT(fscache_acquire,
0405 TP_PROTO(struct fscache_cookie *cookie),
0406
0407 TP_ARGS(cookie),
0408
0409 TP_STRUCT__entry(
0410 __field(unsigned int, cookie )
0411 __field(unsigned int, volume )
0412 __field(int, v_ref )
0413 __field(int, v_n_cookies )
0414 ),
0415
0416 TP_fast_assign(
0417 __entry->cookie = cookie->debug_id;
0418 __entry->volume = cookie->volume->debug_id;
0419 __entry->v_ref = refcount_read(&cookie->volume->ref);
0420 __entry->v_n_cookies = atomic_read(&cookie->volume->n_cookies);
0421 ),
0422
0423 TP_printk("c=%08x V=%08x vr=%d vc=%d",
0424 __entry->cookie,
0425 __entry->volume, __entry->v_ref, __entry->v_n_cookies)
0426 );
0427
0428 TRACE_EVENT(fscache_relinquish,
0429 TP_PROTO(struct fscache_cookie *cookie, bool retire),
0430
0431 TP_ARGS(cookie, retire),
0432
0433 TP_STRUCT__entry(
0434 __field(unsigned int, cookie )
0435 __field(unsigned int, volume )
0436 __field(int, ref )
0437 __field(int, n_active )
0438 __field(u8, flags )
0439 __field(bool, retire )
0440 ),
0441
0442 TP_fast_assign(
0443 __entry->cookie = cookie->debug_id;
0444 __entry->volume = cookie->volume->debug_id;
0445 __entry->ref = refcount_read(&cookie->ref);
0446 __entry->n_active = atomic_read(&cookie->n_active);
0447 __entry->flags = cookie->flags;
0448 __entry->retire = retire;
0449 ),
0450
0451 TP_printk("c=%08x V=%08x r=%d U=%d f=%02x rt=%u",
0452 __entry->cookie, __entry->volume, __entry->ref,
0453 __entry->n_active, __entry->flags, __entry->retire)
0454 );
0455
0456 TRACE_EVENT(fscache_invalidate,
0457 TP_PROTO(struct fscache_cookie *cookie, loff_t new_size),
0458
0459 TP_ARGS(cookie, new_size),
0460
0461 TP_STRUCT__entry(
0462 __field(unsigned int, cookie )
0463 __field(loff_t, new_size )
0464 ),
0465
0466 TP_fast_assign(
0467 __entry->cookie = cookie->debug_id;
0468 __entry->new_size = new_size;
0469 ),
0470
0471 TP_printk("c=%08x sz=%llx",
0472 __entry->cookie, __entry->new_size)
0473 );
0474
0475 TRACE_EVENT(fscache_resize,
0476 TP_PROTO(struct fscache_cookie *cookie, loff_t new_size),
0477
0478 TP_ARGS(cookie, new_size),
0479
0480 TP_STRUCT__entry(
0481 __field(unsigned int, cookie )
0482 __field(loff_t, old_size )
0483 __field(loff_t, new_size )
0484 ),
0485
0486 TP_fast_assign(
0487 __entry->cookie = cookie->debug_id;
0488 __entry->old_size = cookie->object_size;
0489 __entry->new_size = new_size;
0490 ),
0491
0492 TP_printk("c=%08x os=%08llx sz=%08llx",
0493 __entry->cookie,
0494 __entry->old_size,
0495 __entry->new_size)
0496 );
0497
0498 #endif
0499
0500
0501 #include <trace/define_trace.h>