+static unsigned long o_to_kb_rate(struct btrace_out *o, int rw)
+{
+ uint64_t usec = (o->last_ttime[rw] - o->first_ttime[rw]) / 1000ULL;
+ uint64_t val;
+
+ if (!usec)
+ return 0;
+
+ usec /= 1000;
+ if (!usec)
+ return 0;
+
+ val = o->kb[rw] * 1000ULL;
+ return val / usec;
+}
+
+static uint64_t o_first_ttime(struct btrace_out *o)
+{
+ uint64_t first;
+
+ first = min(o->first_ttime[0], o->first_ttime[1]);
+ return min(first, o->first_ttime[2]);
+}
+
+static uint64_t o_longest_ttime(struct btrace_out *o)
+{
+ uint64_t ret = 0;
+ int i;
+
+ for (i = 0; i < DDIR_RWDIR_CNT; i++) {
+ uint64_t diff;
+
+ diff = o->last_ttime[i] - o->first_ttime[i];
+ ret = max(diff, ret);
+ }
+
+ return ret;
+}
+