From: Nathan Scott Date: Thu, 6 Jul 2006 08:04:23 +0000 (+0200) Subject: [PATCH] Support for readahead tracing X-Git-Tag: blktrace-0.99.2~34 X-Git-Url: https://git.kernel.dk/?a=commitdiff_plain;h=f86990edd23e465f8a865c34d308f888b8e6ee2d;p=blktrace.git [PATCH] Support for readahead tracing These are the userspace changes to allow blktrace to distinguish readahead from non-readahead reads. --- diff --git a/act_mask.c b/act_mask.c index f2767bd..8fdf1d9 100644 --- a/act_mask.c +++ b/act_mask.c @@ -23,6 +23,7 @@ static struct mask_map mask_maps[] = { DECLARE_MASK_MAP(COMPLETE), DECLARE_MASK_MAP(FS), DECLARE_MASK_MAP(PC), + DECLARE_MASK_MAP(AHEAD), }; int find_mask_map(char *string) diff --git a/blkparse_fmt.c b/blkparse_fmt.c index fe788b5..fdbe2dd 100644 --- a/blkparse_fmt.c +++ b/blkparse_fmt.c @@ -63,6 +63,7 @@ int add_format_spec(char *option) static inline void fill_rwbs(char *rwbs, struct blk_io_trace *t) { int w = t->action & BLK_TC_ACT(BLK_TC_WRITE); + int a = t->action & BLK_TC_ACT(BLK_TC_AHEAD); int b = t->action & BLK_TC_ACT(BLK_TC_BARRIER); int s = t->action & BLK_TC_ACT(BLK_TC_SYNC); int i = 0; @@ -71,6 +72,8 @@ static inline void fill_rwbs(char *rwbs, struct blk_io_trace *t) rwbs[i++] = 'W'; else rwbs[i++] = 'R'; + if (a) + rwbs[i++] = 'A'; if (b) rwbs[i++] = 'B'; if (s) diff --git a/blkrawverify.c b/blkrawverify.c index 93e8efa..09100c7 100644 --- a/blkrawverify.c +++ b/blkrawverify.c @@ -46,7 +46,8 @@ static struct trace_info traces[] = { TRACE_TO_STRING( BLK_TC_ISSUE ), TRACE_TO_STRING( BLK_TC_COMPLETE ), TRACE_TO_STRING( BLK_TC_FS ), - TRACE_TO_STRING( BLK_TC_PC ) + TRACE_TO_STRING( BLK_TC_PC ), + TRACE_TO_STRING( BLK_TC_AHEAD ), }; #define N_TRACES (sizeof(traces) / sizeof(struct trace_info)) diff --git a/blktrace_api.h b/blktrace_api.h index 1aaf0fe..fb7ef90 100644 --- a/blktrace_api.h +++ b/blktrace_api.h @@ -10,7 +10,7 @@ enum { BLK_TC_READ = 1 << 0, /* reads */ BLK_TC_WRITE = 1 << 1, /* writes */ BLK_TC_BARRIER = 1 << 2, /* barrier */ - BLK_TC_SYNC = 1 << 3, /* barrier */ + BLK_TC_SYNC = 1 << 3, /* sync */ BLK_TC_QUEUE = 1 << 4, /* queueing/merging */ BLK_TC_REQUEUE = 1 << 5, /* requeueing */ BLK_TC_ISSUE = 1 << 6, /* issue */ @@ -18,6 +18,7 @@ enum { BLK_TC_FS = 1 << 8, /* fs requests */ BLK_TC_PC = 1 << 9, /* pc requests */ BLK_TC_NOTIFY = 1 << 10, /* special message */ + BLK_TC_AHEAD = 1 << 11, /* readahead */ BLK_TC_END = 1 << 15, /* only 16-bits, reminder */ };