Adaptive io latency distrobution "histogram"

Log ranges all the way down to microseconds, and display the most
appropriate values for those ranges.

This makes the latency usable for sub-milisecond devices as well.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
diff --git a/fio.h b/fio.h
index 2104e3a..813e55b 100644
--- a/fio.h
+++ b/fio.h
@@ -295,7 +295,8 @@
  * How many depth levels to log
  */
 #define FIO_IO_U_MAP_NR	8
-#define FIO_IO_U_LAT_NR 12
+#define FIO_IO_U_LAT_U_NR 12
+#define FIO_IO_U_LAT_M_NR 10
 
 struct thread_stat {
 	char *name;
@@ -333,7 +334,8 @@
 	 * IO depth and latency stats
 	 */
 	unsigned int io_u_map[FIO_IO_U_MAP_NR];
-	unsigned int io_u_lat[FIO_IO_U_LAT_NR];
+	unsigned int io_u_lat_u[FIO_IO_U_LAT_U_NR];
+	unsigned int io_u_lat_m[FIO_IO_U_LAT_M_NR];
 	unsigned long total_io_u[2];
 	unsigned long short_io_u[2];