From e09231c214906b4ff8cbc3dc202c39755fbf6afd Mon Sep 17 00:00:00 2001 From: Zheng Liu Date: Fri, 16 Sep 2011 08:20:12 +0200 Subject: [PATCH] Fix sum_stat() bug in group_reporting Write samples in io_stat does not be counted with rw=randread, vice versa. Then, in sum_stat() function, it will cause 0/0 in calculating mean and S, and 'nan' is printed. So it should return immediately when src->samples is equal to 0. the error result is as follows: write: io=8328.0KB, bw=1582.7KB/s, iops=395 , runt= 5262msec clat (usec): min=58 , max=293353 , avg= -nan, stdev= -nan lat (usec): min=59 , max=293353 , avg= -nan, stdev= -nan bw (KB/s) : min= 92, max= 804, per=-nan%, avg= -nan, stdev= -nan the configuration file used: [global] direct=1 ioengine=psync bs=4k filename=/dev/sdb1 runtime=5 group_reporting loops=50 [read] rw=randread numjobs=8 [write] rw=randwrite numjobs=8 CC: Jens Axboe CC: Yu-ju Hong Signed-off-by: Zheng Liu Signed-off-by: Jens Axboe --- stat.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/stat.c b/stat.c index d2cc7759..3662fd9e 100644 --- a/stat.c +++ b/stat.c @@ -618,6 +618,9 @@ static void sum_stat(struct io_stat *dst, struct io_stat *src, int nr) { double mean, S; + if (src->samples == 0) + return; + dst->min_val = min(dst->min_val, src->min_val); dst->max_val = max(dst->max_val, src->max_val); -- 2.25.1