aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan Kara <jack@suse.cz>2012-09-01 23:37:20 +0200
committerChris Mason <chris.mason@oracle.com>2012-09-10 20:53:05 -0400
commit41fdf407713a487702d8112b6d4696744e693b73 (patch)
tree25f4f34d3a39c76874e03d7b641497e0336491da
parent1582ecc9db5e2be713493b07d015e272b97dd7e7 (diff)
downloadblktrace-41fdf407713a487702d8112b6d4696744e693b73.tar.gz
iowatcher: Fix filtering of outliers from below
There are lots of trace actions which do not carry a sector with them (e.g. plug, unplug, ...). Thus sector is 0 for them and that results in trimming of outliers from below never working. Fix the problem by accounting only Queue events in the outlier statistics. Signed-off-by: Jan Kara <jack@suse.cz> Signed-off-by: Chris Mason <chris.mason@fusionio.com>
-rw-r--r--iowatcher/blkparse.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/iowatcher/blkparse.c b/iowatcher/blkparse.c
index 2be2f05..3aa44a6 100644
--- a/iowatcher/blkparse.c
+++ b/iowatcher/blkparse.c
@@ -463,7 +463,8 @@ int filter_outliers(struct trace *trace, u64 max_offset,
memset(max_per_bucket, 0, sizeof(u64) * 11);
first_record(trace);
while (1) {
- if (!(trace->io->action & BLK_TC_ACT(BLK_TC_NOTIFY))) {
+ if (!(trace->io->action & BLK_TC_ACT(BLK_TC_NOTIFY)) &&
+ (trace->io->action & BLK_TA_MASK) == __BLK_TA_QUEUE) {
u64 top = (trace->io->sector << 9) + trace->io->bytes;
slot = (int)(top / bytes_per_bucket);
hits[slot]++;