Subject: compaction tracepoint broken with CONFIG_COMPACTION enabled (was: mmotm 2015-01-16-15-50 uploaded)

From: Michal Hocko <[email-masked]>
Date: Mon, 19 Jan 2015 13:42:10 +0100

Hi,
compaction trace points seem to be broken without CONFIG_COMPACTION
enabled after
mm-compaction-more-trace-to-understand-when-why-compaction-start-finish.patch.

My config is
# CONFIG_COMPACTION is not set
CONFIG_CMA=y

which might be a bit unusual but I am getting
  CC      mm/compaction.o
In file included from include/trace/define_trace.h:90:0,
                 from include/trace/events/compaction.h:298,
                 from mm/compaction.c:49:
include/trace/events/compaction.h: In function ‘ftrace_raw_output_mm_compaction_end’:
include/trace/events/compaction.h:164:3: error: ‘compaction_status_string’ undeclared (first use in this function)
   compaction_status_string[__entry->status])
   ^
[...]
include/trace/events/compaction.h: In function ‘ftrace_raw_output_mm_compaction_suitable_template’:
include/trace/events/compaction.h:220:3: error: ‘compaction_status_string’ undeclared (first use in this function)
   compaction_status_string[__entry->ret])
[...]
scripts/Makefile.build:257: recipe for target 'mm/compaction.o' failed
make[1]: *** [mm/compaction.o] Error 1
Makefile:1528: recipe for target 'mm/compaction.o' failed
make: *** [mm/compaction.o] Error 2

Moving compaction_status_string outside of CONFIG_COMPACTION doesn't
help much because of other failures:
include/trace/events/compaction.h:261:30: error: ‘struct zone’ has no member named ‘compact_defer_shift’
   __entry->defer_shift = zone->compact_defer_shift;

So I guess the tracepoint need a better fix.
-- 
Michal Hocko
SUSE Labs