aboutsummaryrefslogtreecommitdiffstats
path: root/include/trace/events/ext4.h
diff options
context:
space:
mode:
authorTheodore Ts'o <tytso@mit.edu>2013-07-01 08:12:40 -0400
committerTheodore Ts'o <tytso@mit.edu>2013-07-01 08:12:40 -0400
commit21ddd568c133024196d394c43923f55cad1e7bd0 (patch)
tree2fc296ba15e286223e53f638c5f47c94f0ced7de /include/trace/events/ext4.h
parentcb530541182bee14112675046331f20a1c831507 (diff)
ext4: translate flag bits to strings in tracepoints
Translate the bitfields used in various flags argument to strings to make the tracepoint output more human-readable. Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Diffstat (limited to 'include/trace/events/ext4.h')
-rw-r--r--include/trace/events/ext4.h135
1 files changed, 96 insertions, 39 deletions
diff --git a/include/trace/events/ext4.h b/include/trace/events/ext4.h
index 72f523eb82e0..2068db241f22 100644
--- a/include/trace/events/ext4.h
+++ b/include/trace/events/ext4.h
@@ -19,6 +19,57 @@ struct extent_status;
19 19
20#define EXT4_I(inode) (container_of(inode, struct ext4_inode_info, vfs_inode)) 20#define EXT4_I(inode) (container_of(inode, struct ext4_inode_info, vfs_inode))
21 21
22#define show_mballoc_flags(flags) __print_flags(flags, "|", \
23 { EXT4_MB_HINT_MERGE, "HINT_MERGE" }, \
24 { EXT4_MB_HINT_RESERVED, "HINT_RESV" }, \
25 { EXT4_MB_HINT_METADATA, "HINT_MDATA" }, \
26 { EXT4_MB_HINT_FIRST, "HINT_FIRST" }, \
27 { EXT4_MB_HINT_BEST, "HINT_BEST" }, \
28 { EXT4_MB_HINT_DATA, "HINT_DATA" }, \
29 { EXT4_MB_HINT_NOPREALLOC, "HINT_NOPREALLOC" }, \
30 { EXT4_MB_HINT_GROUP_ALLOC, "HINT_GRP_ALLOC" }, \
31 { EXT4_MB_HINT_GOAL_ONLY, "HINT_GOAL_ONLY" }, \
32 { EXT4_MB_HINT_TRY_GOAL, "HINT_TRY_GOAL" }, \
33 { EXT4_MB_DELALLOC_RESERVED, "DELALLOC_RESV" }, \
34 { EXT4_MB_STREAM_ALLOC, "STREAM_ALLOC" }, \
35 { EXT4_MB_USE_ROOT_BLOCKS, "USE_ROOT_BLKS" }, \
36 { EXT4_MB_USE_RESERVED, "USE_RESV" })
37
38#define show_map_flags(flags) __print_flags(flags, "|", \
39 { EXT4_GET_BLOCKS_CREATE, "CREATE" }, \
40 { EXT4_GET_BLOCKS_UNINIT_EXT, "UNINIT" }, \
41 { EXT4_GET_BLOCKS_DELALLOC_RESERVE, "DELALLOC" }, \
42 { EXT4_GET_BLOCKS_PRE_IO, "PRE_IO" }, \
43 { EXT4_GET_BLOCKS_CONVERT, "CONVERT" }, \
44 { EXT4_GET_BLOCKS_METADATA_NOFAIL, "METADATA_NOFAIL" }, \
45 { EXT4_GET_BLOCKS_NO_NORMALIZE, "NO_NORMALIZE" }, \
46 { EXT4_GET_BLOCKS_KEEP_SIZE, "KEEP_SIZE" }, \
47 { EXT4_GET_BLOCKS_NO_LOCK, "NO_LOCK" }, \
48 { EXT4_GET_BLOCKS_NO_PUT_HOLE, "NO_PUT_HOLE" })
49
50#define show_mflags(flags) __print_flags(flags, "", \
51 { EXT4_MAP_NEW, "N" }, \
52 { EXT4_MAP_MAPPED, "M" }, \
53 { EXT4_MAP_UNWRITTEN, "U" }, \
54 { EXT4_MAP_BOUNDARY, "B" }, \
55 { EXT4_MAP_UNINIT, "u" }, \
56 { EXT4_MAP_FROM_CLUSTER, "C" })
57
58#define show_free_flags(flags) __print_flags(flags, "|", \
59 { EXT4_FREE_BLOCKS_METADATA, "METADATA" }, \
60 { EXT4_FREE_BLOCKS_FORGET, "FORGET" }, \
61 { EXT4_FREE_BLOCKS_VALIDATED, "VALIDATED" }, \
62 { EXT4_FREE_BLOCKS_NO_QUOT_UPDATE, "NO_QUOTA" }, \
63 { EXT4_FREE_BLOCKS_NOFREE_FIRST_CLUSTER,"1ST_CLUSTER" },\
64 { EXT4_FREE_BLOCKS_NOFREE_LAST_CLUSTER, "LAST_CLUSTER" })
65
66#define show_extent_status(status) __print_flags(status, "", \
67 { (1 << 3), "W" }, \
68 { (1 << 2), "U" }, \
69 { (1 << 1), "D" }, \
70 { (1 << 0), "H" })
71
72
22TRACE_EVENT(ext4_free_inode, 73TRACE_EVENT(ext4_free_inode,
23 TP_PROTO(struct inode *inode), 74 TP_PROTO(struct inode *inode),
24 75
@@ -373,10 +424,10 @@ TRACE_EVENT(ext4_da_write_pages_extent,
373 __entry->flags = map->m_flags; 424 __entry->flags = map->m_flags;
374 ), 425 ),
375 426
376 TP_printk("dev %d,%d ino %lu lblk %llu len %u flags 0x%04x", 427 TP_printk("dev %d,%d ino %lu lblk %llu len %u flags %s",
377 MAJOR(__entry->dev), MINOR(__entry->dev), 428 MAJOR(__entry->dev), MINOR(__entry->dev),
378 (unsigned long) __entry->ino, __entry->lblk, __entry->len, 429 (unsigned long) __entry->ino, __entry->lblk, __entry->len,
379 __entry->flags) 430 show_mflags(__entry->flags))
380); 431);
381 432
382TRACE_EVENT(ext4_writepages_result, 433TRACE_EVENT(ext4_writepages_result,
@@ -691,10 +742,10 @@ TRACE_EVENT(ext4_request_blocks,
691 __entry->flags = ar->flags; 742 __entry->flags = ar->flags;
692 ), 743 ),
693 744
694 TP_printk("dev %d,%d ino %lu flags %u len %u lblk %u goal %llu " 745 TP_printk("dev %d,%d ino %lu flags %s len %u lblk %u goal %llu "
695 "lleft %u lright %u pleft %llu pright %llu ", 746 "lleft %u lright %u pleft %llu pright %llu ",
696 MAJOR(__entry->dev), MINOR(__entry->dev), 747 MAJOR(__entry->dev), MINOR(__entry->dev),
697 (unsigned long) __entry->ino, __entry->flags, 748 (unsigned long) __entry->ino, show_mballoc_flags(__entry->flags),
698 __entry->len, __entry->logical, __entry->goal, 749 __entry->len, __entry->logical, __entry->goal,
699 __entry->lleft, __entry->lright, __entry->pleft, 750 __entry->lleft, __entry->lright, __entry->pleft,
700 __entry->pright) 751 __entry->pright)
@@ -733,10 +784,10 @@ TRACE_EVENT(ext4_allocate_blocks,
733 __entry->flags = ar->flags; 784 __entry->flags = ar->flags;
734 ), 785 ),
735 786
736 TP_printk("dev %d,%d ino %lu flags %u len %u block %llu lblk %u " 787 TP_printk("dev %d,%d ino %lu flags %s len %u block %llu lblk %u "
737 "goal %llu lleft %u lright %u pleft %llu pright %llu", 788 "goal %llu lleft %u lright %u pleft %llu pright %llu",
738 MAJOR(__entry->dev), MINOR(__entry->dev), 789 MAJOR(__entry->dev), MINOR(__entry->dev),
739 (unsigned long) __entry->ino, __entry->flags, 790 (unsigned long) __entry->ino, show_mballoc_flags(__entry->flags),
740 __entry->len, __entry->block, __entry->logical, 791 __entry->len, __entry->block, __entry->logical,
741 __entry->goal, __entry->lleft, __entry->lright, 792 __entry->goal, __entry->lleft, __entry->lright,
742 __entry->pleft, __entry->pright) 793 __entry->pleft, __entry->pright)
@@ -766,11 +817,11 @@ TRACE_EVENT(ext4_free_blocks,
766 __entry->mode = inode->i_mode; 817 __entry->mode = inode->i_mode;
767 ), 818 ),
768 819
769 TP_printk("dev %d,%d ino %lu mode 0%o block %llu count %lu flags %d", 820 TP_printk("dev %d,%d ino %lu mode 0%o block %llu count %lu flags %s",
770 MAJOR(__entry->dev), MINOR(__entry->dev), 821 MAJOR(__entry->dev), MINOR(__entry->dev),
771 (unsigned long) __entry->ino, 822 (unsigned long) __entry->ino,
772 __entry->mode, __entry->block, __entry->count, 823 __entry->mode, __entry->block, __entry->count,
773 __entry->flags) 824 show_free_flags(__entry->flags))
774); 825);
775 826
776TRACE_EVENT(ext4_sync_file_enter, 827TRACE_EVENT(ext4_sync_file_enter,
@@ -921,7 +972,7 @@ TRACE_EVENT(ext4_mballoc_alloc,
921 ), 972 ),
922 973
923 TP_printk("dev %d,%d inode %lu orig %u/%d/%u@%u goal %u/%d/%u@%u " 974 TP_printk("dev %d,%d inode %lu orig %u/%d/%u@%u goal %u/%d/%u@%u "
924 "result %u/%d/%u@%u blks %u grps %u cr %u flags 0x%04x " 975 "result %u/%d/%u@%u blks %u grps %u cr %u flags %s "
925 "tail %u broken %u", 976 "tail %u broken %u",
926 MAJOR(__entry->dev), MINOR(__entry->dev), 977 MAJOR(__entry->dev), MINOR(__entry->dev),
927 (unsigned long) __entry->ino, 978 (unsigned long) __entry->ino,
@@ -932,7 +983,7 @@ TRACE_EVENT(ext4_mballoc_alloc,
932 __entry->result_group, __entry->result_start, 983 __entry->result_group, __entry->result_start,
933 __entry->result_len, __entry->result_logical, 984 __entry->result_len, __entry->result_logical,
934 __entry->found, __entry->groups, __entry->cr, 985 __entry->found, __entry->groups, __entry->cr,
935 __entry->flags, __entry->tail, 986 show_mballoc_flags(__entry->flags), __entry->tail,
936 __entry->buddy ? 1 << __entry->buddy : 0) 987 __entry->buddy ? 1 << __entry->buddy : 0)
937); 988);
938 989
@@ -1546,10 +1597,10 @@ DECLARE_EVENT_CLASS(ext4__map_blocks_enter,
1546 __entry->flags = flags; 1597 __entry->flags = flags;
1547 ), 1598 ),
1548 1599
1549 TP_printk("dev %d,%d ino %lu lblk %u len %u flags %u", 1600 TP_printk("dev %d,%d ino %lu lblk %u len %u flags %s",
1550 MAJOR(__entry->dev), MINOR(__entry->dev), 1601 MAJOR(__entry->dev), MINOR(__entry->dev),
1551 (unsigned long) __entry->ino, 1602 (unsigned long) __entry->ino,
1552 __entry->lblk, __entry->len, __entry->flags) 1603 __entry->lblk, __entry->len, show_map_flags(__entry->flags))
1553); 1604);
1554 1605
1555DEFINE_EVENT(ext4__map_blocks_enter, ext4_ext_map_blocks_enter, 1606DEFINE_EVENT(ext4__map_blocks_enter, ext4_ext_map_blocks_enter,
@@ -1567,47 +1618,53 @@ DEFINE_EVENT(ext4__map_blocks_enter, ext4_ind_map_blocks_enter,
1567); 1618);
1568 1619
1569DECLARE_EVENT_CLASS(ext4__map_blocks_exit, 1620DECLARE_EVENT_CLASS(ext4__map_blocks_exit,
1570 TP_PROTO(struct inode *inode, struct ext4_map_blocks *map, int ret), 1621 TP_PROTO(struct inode *inode, unsigned flags, struct ext4_map_blocks *map,
1622 int ret),
1571 1623
1572 TP_ARGS(inode, map, ret), 1624 TP_ARGS(inode, flags, map, ret),
1573 1625
1574 TP_STRUCT__entry( 1626 TP_STRUCT__entry(
1575 __field( dev_t, dev ) 1627 __field( dev_t, dev )
1576 __field( ino_t, ino ) 1628 __field( ino_t, ino )
1629 __field( unsigned int, flags )
1577 __field( ext4_fsblk_t, pblk ) 1630 __field( ext4_fsblk_t, pblk )
1578 __field( ext4_lblk_t, lblk ) 1631 __field( ext4_lblk_t, lblk )
1579 __field( unsigned int, len ) 1632 __field( unsigned int, len )
1580 __field( unsigned int, flags ) 1633 __field( unsigned int, mflags )
1581 __field( int, ret ) 1634 __field( int, ret )
1582 ), 1635 ),
1583 1636
1584 TP_fast_assign( 1637 TP_fast_assign(
1585 __entry->dev = inode->i_sb->s_dev; 1638 __entry->dev = inode->i_sb->s_dev;
1586 __entry->ino = inode->i_ino; 1639 __entry->ino = inode->i_ino;
1640 __entry->flags = flags;
1587 __entry->pblk = map->m_pblk; 1641 __entry->pblk = map->m_pblk;
1588 __entry->lblk = map->m_lblk; 1642 __entry->lblk = map->m_lblk;
1589 __entry->len = map->m_len; 1643 __entry->len = map->m_len;
1590 __entry->flags = map->m_flags; 1644 __entry->mflags = map->m_flags;
1591 __entry->ret = ret; 1645 __entry->ret = ret;
1592 ), 1646 ),
1593 1647
1594 TP_printk("dev %d,%d ino %lu lblk %u pblk %llu len %u flags %x ret %d", 1648 TP_printk("dev %d,%d ino %lu flags %s lblk %u pblk %llu len %u "
1649 "mflags %s ret %d",
1595 MAJOR(__entry->dev), MINOR(__entry->dev), 1650 MAJOR(__entry->dev), MINOR(__entry->dev),
1596 (unsigned long) __entry->ino, 1651 (unsigned long) __entry->ino,
1597 __entry->lblk, __entry->pblk, 1652 show_map_flags(__entry->flags), __entry->lblk, __entry->pblk,
1598 __entry->len, __entry->flags, __entry->ret) 1653 __entry->len, show_mflags(__entry->mflags), __entry->ret)
1599); 1654);
1600 1655
1601DEFINE_EVENT(ext4__map_blocks_exit, ext4_ext_map_blocks_exit, 1656DEFINE_EVENT(ext4__map_blocks_exit, ext4_ext_map_blocks_exit,
1602 TP_PROTO(struct inode *inode, struct ext4_map_blocks *map, int ret), 1657 TP_PROTO(struct inode *inode, unsigned flags,
1658 struct ext4_map_blocks *map, int ret),
1603 1659
1604 TP_ARGS(inode, map, ret) 1660 TP_ARGS(inode, flags, map, ret)
1605); 1661);
1606 1662
1607DEFINE_EVENT(ext4__map_blocks_exit, ext4_ind_map_blocks_exit, 1663DEFINE_EVENT(ext4__map_blocks_exit, ext4_ind_map_blocks_exit,
1608 TP_PROTO(struct inode *inode, struct ext4_map_blocks *map, int ret), 1664 TP_PROTO(struct inode *inode, unsigned flags,
1665 struct ext4_map_blocks *map, int ret),
1609 1666
1610 TP_ARGS(inode, map, ret) 1667 TP_ARGS(inode, flags, map, ret)
1611); 1668);
1612 1669
1613TRACE_EVENT(ext4_ext_load_extent, 1670TRACE_EVENT(ext4_ext_load_extent,
@@ -1779,12 +1836,12 @@ TRACE_EVENT(ext4_ext_handle_uninitialized_extents,
1779 __entry->newblk = newblock; 1836 __entry->newblk = newblock;
1780 ), 1837 ),
1781 1838
1782 TP_printk("dev %d,%d ino %lu m_lblk %u m_pblk %llu m_len %u flags %x " 1839 TP_printk("dev %d,%d ino %lu m_lblk %u m_pblk %llu m_len %u flags %s "
1783 "allocated %d newblock %llu", 1840 "allocated %d newblock %llu",
1784 MAJOR(__entry->dev), MINOR(__entry->dev), 1841 MAJOR(__entry->dev), MINOR(__entry->dev),
1785 (unsigned long) __entry->ino, 1842 (unsigned long) __entry->ino,
1786 (unsigned) __entry->lblk, (unsigned long long) __entry->pblk, 1843 (unsigned) __entry->lblk, (unsigned long long) __entry->pblk,
1787 __entry->len, __entry->flags, 1844 __entry->len, show_map_flags(__entry->flags),
1788 (unsigned int) __entry->allocated, 1845 (unsigned int) __entry->allocated,
1789 (unsigned long long) __entry->newblk) 1846 (unsigned long long) __entry->newblk)
1790); 1847);
@@ -1812,10 +1869,10 @@ TRACE_EVENT(ext4_get_implied_cluster_alloc_exit,
1812 __entry->ret = ret; 1869 __entry->ret = ret;
1813 ), 1870 ),
1814 1871
1815 TP_printk("dev %d,%d m_lblk %u m_pblk %llu m_len %u m_flags %u ret %d", 1872 TP_printk("dev %d,%d m_lblk %u m_pblk %llu m_len %u m_flags %s ret %d",
1816 MAJOR(__entry->dev), MINOR(__entry->dev), 1873 MAJOR(__entry->dev), MINOR(__entry->dev),
1817 __entry->lblk, (unsigned long long) __entry->pblk, 1874 __entry->lblk, (unsigned long long) __entry->pblk,
1818 __entry->len, __entry->flags, __entry->ret) 1875 __entry->len, show_mflags(__entry->flags), __entry->ret)
1819); 1876);
1820 1877
1821TRACE_EVENT(ext4_ext_put_in_cache, 1878TRACE_EVENT(ext4_ext_put_in_cache,
@@ -2146,7 +2203,7 @@ TRACE_EVENT(ext4_es_insert_extent,
2146 __field( ext4_lblk_t, lblk ) 2203 __field( ext4_lblk_t, lblk )
2147 __field( ext4_lblk_t, len ) 2204 __field( ext4_lblk_t, len )
2148 __field( ext4_fsblk_t, pblk ) 2205 __field( ext4_fsblk_t, pblk )
2149 __field( unsigned long long, status ) 2206 __field( char, status )
2150 ), 2207 ),
2151 2208
2152 TP_fast_assign( 2209 TP_fast_assign(
@@ -2155,14 +2212,14 @@ TRACE_EVENT(ext4_es_insert_extent,
2155 __entry->lblk = es->es_lblk; 2212 __entry->lblk = es->es_lblk;
2156 __entry->len = es->es_len; 2213 __entry->len = es->es_len;
2157 __entry->pblk = ext4_es_pblock(es); 2214 __entry->pblk = ext4_es_pblock(es);
2158 __entry->status = ext4_es_status(es); 2215 __entry->status = ext4_es_status(es) >> 60;
2159 ), 2216 ),
2160 2217
2161 TP_printk("dev %d,%d ino %lu es [%u/%u) mapped %llu status %llx", 2218 TP_printk("dev %d,%d ino %lu es [%u/%u) mapped %llu status %s",
2162 MAJOR(__entry->dev), MINOR(__entry->dev), 2219 MAJOR(__entry->dev), MINOR(__entry->dev),
2163 (unsigned long) __entry->ino, 2220 (unsigned long) __entry->ino,
2164 __entry->lblk, __entry->len, 2221 __entry->lblk, __entry->len,
2165 __entry->pblk, __entry->status) 2222 __entry->pblk, show_extent_status(__entry->status))
2166); 2223);
2167 2224
2168TRACE_EVENT(ext4_es_remove_extent, 2225TRACE_EVENT(ext4_es_remove_extent,
@@ -2223,7 +2280,7 @@ TRACE_EVENT(ext4_es_find_delayed_extent_range_exit,
2223 __field( ext4_lblk_t, lblk ) 2280 __field( ext4_lblk_t, lblk )
2224 __field( ext4_lblk_t, len ) 2281 __field( ext4_lblk_t, len )
2225 __field( ext4_fsblk_t, pblk ) 2282 __field( ext4_fsblk_t, pblk )
2226 __field( unsigned long long, status ) 2283 __field( char, status )
2227 ), 2284 ),
2228 2285
2229 TP_fast_assign( 2286 TP_fast_assign(
@@ -2232,14 +2289,14 @@ TRACE_EVENT(ext4_es_find_delayed_extent_range_exit,
2232 __entry->lblk = es->es_lblk; 2289 __entry->lblk = es->es_lblk;
2233 __entry->len = es->es_len; 2290 __entry->len = es->es_len;
2234 __entry->pblk = ext4_es_pblock(es); 2291 __entry->pblk = ext4_es_pblock(es);
2235 __entry->status = ext4_es_status(es); 2292 __entry->status = ext4_es_status(es) >> 60;
2236 ), 2293 ),
2237 2294
2238 TP_printk("dev %d,%d ino %lu es [%u/%u) mapped %llu status %llx", 2295 TP_printk("dev %d,%d ino %lu es [%u/%u) mapped %llu status %s",
2239 MAJOR(__entry->dev), MINOR(__entry->dev), 2296 MAJOR(__entry->dev), MINOR(__entry->dev),
2240 (unsigned long) __entry->ino, 2297 (unsigned long) __entry->ino,
2241 __entry->lblk, __entry->len, 2298 __entry->lblk, __entry->len,
2242 __entry->pblk, __entry->status) 2299 __entry->pblk, show_extent_status(__entry->status))
2243); 2300);
2244 2301
2245TRACE_EVENT(ext4_es_lookup_extent_enter, 2302TRACE_EVENT(ext4_es_lookup_extent_enter,
@@ -2276,7 +2333,7 @@ TRACE_EVENT(ext4_es_lookup_extent_exit,
2276 __field( ext4_lblk_t, lblk ) 2333 __field( ext4_lblk_t, lblk )
2277 __field( ext4_lblk_t, len ) 2334 __field( ext4_lblk_t, len )
2278 __field( ext4_fsblk_t, pblk ) 2335 __field( ext4_fsblk_t, pblk )
2279 __field( unsigned long long, status ) 2336 __field( char, status )
2280 __field( int, found ) 2337 __field( int, found )
2281 ), 2338 ),
2282 2339
@@ -2286,16 +2343,16 @@ TRACE_EVENT(ext4_es_lookup_extent_exit,
2286 __entry->lblk = es->es_lblk; 2343 __entry->lblk = es->es_lblk;
2287 __entry->len = es->es_len; 2344 __entry->len = es->es_len;
2288 __entry->pblk = ext4_es_pblock(es); 2345 __entry->pblk = ext4_es_pblock(es);
2289 __entry->status = ext4_es_status(es); 2346 __entry->status = ext4_es_status(es) >> 60;
2290 __entry->found = found; 2347 __entry->found = found;
2291 ), 2348 ),
2292 2349
2293 TP_printk("dev %d,%d ino %lu found %d [%u/%u) %llu %llx", 2350 TP_printk("dev %d,%d ino %lu found %d [%u/%u) %llu %s",
2294 MAJOR(__entry->dev), MINOR(__entry->dev), 2351 MAJOR(__entry->dev), MINOR(__entry->dev),
2295 (unsigned long) __entry->ino, __entry->found, 2352 (unsigned long) __entry->ino, __entry->found,
2296 __entry->lblk, __entry->len, 2353 __entry->lblk, __entry->len,
2297 __entry->found ? __entry->pblk : 0, 2354 __entry->found ? __entry->pblk : 0,
2298 __entry->found ? __entry->status : 0) 2355 show_extent_status(__entry->found ? __entry->status : 0))
2299); 2356);
2300 2357
2301TRACE_EVENT(ext4_es_shrink_enter, 2358TRACE_EVENT(ext4_es_shrink_enter,