Skip to content

Commit

Permalink
Added in MESSAGE notes for blktraces
Browse files Browse the repository at this point in the history
Allows messages to be inserted into blktrace streams.

Signed-off-by: Alan D. Brunelle <alan.brunelle@hp.com>
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
  • Loading branch information
Alan D. Brunelle authored and Jens Axboe committed May 28, 2008
1 parent be754d2 commit 9d5f09a
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 0 deletions.
14 changes: 14 additions & 0 deletions block/blktrace.c
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,20 @@ static void trace_note_time(struct blk_trace *bt)
local_irq_restore(flags);
}

void __trace_note_message(struct blk_trace *bt, const char *fmt, ...)
{
int n;
va_list args;
static char bt_msg_buf[BLK_TN_MAX_MSG];

va_start(args, fmt);
n = vscnprintf(bt_msg_buf, BLK_TN_MAX_MSG, fmt, args);
va_end(args);

trace_note(bt, 0, BLK_TN_MESSAGE, bt_msg_buf, n);
}
EXPORT_SYMBOL_GPL(__trace_note_message);

static int act_log_check(struct blk_trace *bt, u32 what, sector_t sector,
pid_t pid)
{
Expand Down
25 changes: 25 additions & 0 deletions include/linux/blktrace_api.h
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ enum blktrace_act {
enum blktrace_notify {
__BLK_TN_PROCESS = 0, /* establish pid/name mapping */
__BLK_TN_TIMESTAMP, /* include system clock */
__BLK_TN_MESSAGE, /* Character string message */
};


Expand All @@ -79,6 +80,7 @@ enum blktrace_notify {

#define BLK_TN_PROCESS (__BLK_TN_PROCESS | BLK_TC_ACT(BLK_TC_NOTIFY))
#define BLK_TN_TIMESTAMP (__BLK_TN_TIMESTAMP | BLK_TC_ACT(BLK_TC_NOTIFY))
#define BLK_TN_MESSAGE (__BLK_TN_MESSAGE | BLK_TC_ACT(BLK_TC_NOTIFY))

#define BLK_IO_TRACE_MAGIC 0x65617400
#define BLK_IO_TRACE_VERSION 0x07
Expand Down Expand Up @@ -149,7 +151,28 @@ extern void blk_trace_shutdown(struct request_queue *);
extern void __blk_add_trace(struct blk_trace *, sector_t, int, int, u32, int, int, void *);
extern int do_blk_trace_setup(struct request_queue *q,
char *name, dev_t dev, struct blk_user_trace_setup *buts);
extern void __trace_note_message(struct blk_trace *, const char *fmt, ...);

/**
* blk_add_trace_msg - Add a (simple) message to the blktrace stream
* @q: queue the io is for
* @fmt: format to print message in
* args... Variable argument list for format
*
* Description:
* Records a (simple) message onto the blktrace stream.
*
* NOTE: BLK_TN_MAX_MSG characters are output at most.
* NOTE: Can not use 'static inline' due to presence of var args...
*
**/
#define blk_add_trace_msg(q, fmt, ...) \
do { \
struct blk_trace *bt = (q)->blk_trace; \
if (unlikely(bt)) \
__trace_note_message(bt, fmt, ##__VA_ARGS__); \
} while (0)
#define BLK_TN_MAX_MSG 1024

/**
* blk_add_trace_rq - Add a trace for a request oriented action
Expand Down Expand Up @@ -299,6 +322,8 @@ extern int blk_trace_remove(struct request_queue *q);
#define blk_trace_setup(q, name, dev, arg) (-ENOTTY)
#define blk_trace_startstop(q, start) (-ENOTTY)
#define blk_trace_remove(q) (-ENOTTY)
#define blk_add_trace_msg(q, fmt, ...) do { } while (0)

#endif /* CONFIG_BLK_DEV_IO_TRACE */
#endif /* __KERNEL__ */
#endif

0 comments on commit 9d5f09a

Please sign in to comment.