This patch adds a new keconfig options to enable debug messages for blktrace extension. Signed-off-by: Chaitanya Kulkarni <chaitanya.kulkarni@xxxxxxx> --- kernel/trace/Kconfig | 11 +++++++++++ kernel/trace/blktrace.c | 36 +++++++++++++++++++++++------------- 2 files changed, 34 insertions(+), 13 deletions(-) diff --git a/kernel/trace/Kconfig b/kernel/trace/Kconfig index 5f8c938e495f..d01bd7972638 100644 --- a/kernel/trace/Kconfig +++ b/kernel/trace/Kconfig @@ -481,6 +481,17 @@ config BLKTRACE_EXT If unsure, say N. +config DEBUG_BLKTRACE_EXT + bool "Debug blktrace extension" + depends on BLK_DEV_IO_TRACE + depends on BLOCK + depends on BLKTRACE_EXT + select TRACEPOINTS + select GENERIC_TRACER + select STACKTRACE + help + This enables debug messages for the blktrace extension. + config KPROBE_EVENTS depends on KPROBES depends on HAVE_REGS_AND_STACK_ACCESS_API diff --git a/kernel/trace/blktrace.c b/kernel/trace/blktrace.c index 84163fa6a61f..d03473614b3c 100644 --- a/kernel/trace/blktrace.c +++ b/kernel/trace/blktrace.c @@ -196,45 +196,51 @@ static bool prio_log_check(struct blk_trace *bt, u32 ioprio) switch (IOPRIO_PRIO_CLASS(ioprio)) { case IOPRIO_CLASS_NONE: - case IOPRIO_CLASS_RT: - case IOPRIO_CLASS_BE: - case IOPRIO_CLASS_IDLE: - break; - default: - /*XXX: print rate limit warn here */ - ret = false; - goto out; - } - - switch (IOPRIO_PRIO_CLASS(ioprio)) { - case IOPRIO_CLASS_NONE: +#ifdef CONFIG_DEBUG_BLKTRACE_EXT + trace_printk("%s %d NONE %s\n", __func__, __LINE__, + bt->prio_mask & 0x01 ? "TRUE" : "FALSE"); +#endif /* CONFIG_DEBUG_BLKTRACE_EXT */ if (bt->prio_mask & 0x01) ret = true; else ret = false; break; case IOPRIO_CLASS_RT: +#ifdef CONFIG_DEBUG_BLKTRACE_EXT + trace_printk("%s %d REAL %s\n", __func__, __LINE__, + bt->prio_mask & 0x02 ? "TRUE" : "FALSE"); +#endif /* CONFIG_DEBUG_BLKTRACE_EXT */ if (bt->prio_mask & 0x02) ret = true; else ret = false; break; case IOPRIO_CLASS_BE: +#ifdef CONFIG_DEBUG_BLKTRACE_EXT + trace_printk("%s %d BEST %s\n", __func__, __LINE__, + bt->prio_mask & 0x03 ? "TRUE" : "FALSE"); +#endif /* CONFIG_DEBUG_BLKTRACE_EXT */ if (bt->prio_mask & 0x04) ret = true; else ret = false; break; case IOPRIO_CLASS_IDLE: +#ifdef CONFIG_DEBUG_BLKTRACE_EXT + trace_printk("%s %d IDLE %s\n", __func__, __LINE__, + bt->prio_mask & 0x04 ? "TRUE" : "FALSE"); +#endif /* CONFIG_DEBUG_BLKTRACE_EXT */ if (bt->prio_mask & 0x08) ret = true; else ret = false; break; default: +#ifdef CONFIG_DEBUG_BLKTRACE_EXT + trace_printk("%s %d ERROR\n", __func__, __LINE__); +#endif /* CONFIG_DEBUG_BLKTRACE_EXT */ ret = false; } -out: return ret; } @@ -630,6 +636,10 @@ static int do_blk_trace_setup(struct request_queue *q, char *name, dev_t dev, #ifdef CONFIG_BLKTRACE_EXT if (!bt->act_mask) bt->act_mask = (u64) -1ULL; + +#ifdef CONFIG_DEBUG_BLKTRACE_EXT + trace_printk("blktrace: prio mask 0x%x\n", buts->prio_mask); +#endif /* CONFIG_DEBUG_BLKTRACE_EXT */ bt->prio_mask = buts->prio_mask; #else if (!bt->act_mask) -- 2.19.1