Zero sectors are strange
[blktrace.git] / stats.h
diff --git a/stats.h b/stats.h
index 34f492c31a872f5be549938fde9721e6ec334f3e..5b9a3132d9aa1cb80cac7beaa68936238c492a8a 100644 (file)
--- a/stats.h
+++ b/stats.h
@@ -23,7 +23,7 @@
 #define STATS_H
 
 #include <linux/types.h>
-#include "endian.h"
+#include "blktrace.h"
 
 struct minmax {
        __u64 min;
@@ -75,6 +75,9 @@ static inline void minmax_to_be(struct minmax *mm)
 
 static inline double minmax_avg(struct minmax *mm)
 {
+       if (!mm->num)
+               return 0;
+
        return (mm->sum / (double)mm->num);
 }
 
@@ -82,6 +85,9 @@ static inline double minmax_var(struct minmax *mm)
 {
        double num = (double)mm->num;
 
+       if (!mm->num)
+               return 0;
+
        return ((mm->sos - ((mm->sum * mm->sum) / num)) / num);
 }
 
@@ -124,7 +130,7 @@ static inline void histlog2_merge(struct histlog2 *h, __u32 *dst, __u32 *src)
 {
        int i;
 
-       for (i = 0; i < h->num - 1; i++)
+       for (i = 0; i < h->num; i++)
                dst[i] += src[i];
 }
 
@@ -132,7 +138,7 @@ static inline void histlog2_to_be(__u32 a[], struct histlog2 *h)
 {
        int i;
 
-       for (i = 0; i < h->num - 1; i++)
+       for (i = 0; i < h->num; i++)
                a[i] = cpu_to_be32(a[i]);
 }