forked from Minki/linux
ext4: fix symbolic enum printing in trace output
Trace's macro __print_flags() produce raw event's decraration w/o knowing actual flags value cat /sys/kernel/debug/tracing/events/ext4/ext4_ext_map_blocks_exit/format .. __print_flags(REC->mflags, "", { (1 << BH_New), For that reason we have to explicitly define it via special macro TRACE_DEFINE_ENUM() Also add missed EXTENT_STATUS_REFERENCED flag. #Before patch ext4:ext4_ext_map_blocks_exit: dev 253,0 ino 2 flags lblk 0 pblk 4177 len 1 mflags 0x20 ret 1 ext4:ext4_ext_map_blocks_exit: dev 253,0 ino 12 flags CREATE lblk 0 pblk 34304 len 1 mflags 0x60 ret 1 #With patch ext4:ext4_ext_map_blocks_exit: dev 253,0 ino 2 flags lblk 0 pblk 4177 len 1 mflags M ret 1 ext4:ext4_ext_map_blocks_exit: dev 253,0 ino 12 flags CREATE lblk 0 pblk 34816 len 1 mflags NM ret 1 Signed-off-by: Dmitry Monakhov <dmonakhov@gmail.com> Link: https://lore.kernel.org/r/20191114200147.1073-1-dmonakhov@gmail.com Signed-off-by: Theodore Ts'o <tytso@mit.edu>
This commit is contained in:
parent
57c32ea42f
commit
459c80742e
@ -48,6 +48,16 @@ struct partial_cluster;
|
||||
{ EXT4_GET_BLOCKS_KEEP_SIZE, "KEEP_SIZE" }, \
|
||||
{ EXT4_GET_BLOCKS_ZERO, "ZERO" })
|
||||
|
||||
/*
|
||||
* __print_flags() requires that all enum values be wrapped in the
|
||||
* TRACE_DEFINE_ENUM macro so that the enum value can be encoded in the ftrace
|
||||
* ring buffer.
|
||||
*/
|
||||
TRACE_DEFINE_ENUM(BH_New);
|
||||
TRACE_DEFINE_ENUM(BH_Mapped);
|
||||
TRACE_DEFINE_ENUM(BH_Unwritten);
|
||||
TRACE_DEFINE_ENUM(BH_Boundary);
|
||||
|
||||
#define show_mflags(flags) __print_flags(flags, "", \
|
||||
{ EXT4_MAP_NEW, "N" }, \
|
||||
{ EXT4_MAP_MAPPED, "M" }, \
|
||||
@ -62,11 +72,18 @@ struct partial_cluster;
|
||||
{ EXT4_FREE_BLOCKS_NOFREE_FIRST_CLUSTER,"1ST_CLUSTER" },\
|
||||
{ EXT4_FREE_BLOCKS_NOFREE_LAST_CLUSTER, "LAST_CLUSTER" })
|
||||
|
||||
TRACE_DEFINE_ENUM(ES_WRITTEN_B);
|
||||
TRACE_DEFINE_ENUM(ES_UNWRITTEN_B);
|
||||
TRACE_DEFINE_ENUM(ES_DELAYED_B);
|
||||
TRACE_DEFINE_ENUM(ES_HOLE_B);
|
||||
TRACE_DEFINE_ENUM(ES_REFERENCED_B);
|
||||
|
||||
#define show_extent_status(status) __print_flags(status, "", \
|
||||
{ EXTENT_STATUS_WRITTEN, "W" }, \
|
||||
{ EXTENT_STATUS_UNWRITTEN, "U" }, \
|
||||
{ EXTENT_STATUS_DELAYED, "D" }, \
|
||||
{ EXTENT_STATUS_HOLE, "H" })
|
||||
{ EXTENT_STATUS_HOLE, "H" }, \
|
||||
{ EXTENT_STATUS_REFERENCED, "R" })
|
||||
|
||||
#define show_falloc_mode(mode) __print_flags(mode, "|", \
|
||||
{ FALLOC_FL_KEEP_SIZE, "KEEP_SIZE"}, \
|
||||
|
Loading…
Reference in New Issue
Block a user