Add disk utilization to terse format output

Signed-off-by: Jens Axboe <axboe@kernel.dk>
diff --git a/diskutil.c b/diskutil.c
index 67c47bc..24e1782 100644
--- a/diskutil.c
+++ b/diskutil.c
@@ -453,21 +453,33 @@
 		f->du = __init_disk_util(td, f);
 }
 
-static void show_agg_stats(struct disk_util_agg *agg)
+static void show_agg_stats(struct disk_util_agg *agg, int terse)
 {
 	if (!agg->slavecount)
 		return;
 
-	log_info(", aggrios=%u/%u, aggrmerge=%u/%u, aggrticks=%u/%u,"
-			" aggrin_queue=%u, aggrutil=%3.2f%%",
-			agg->ios[0] / agg->slavecount,
-			agg->ios[1] / agg->slavecount,
-			agg->merges[0] / agg->slavecount,
-			agg->merges[1] / agg->slavecount,
-			agg->ticks[0] / agg->slavecount,
-			agg->ticks[1] / agg->slavecount,
-			agg->time_in_queue / agg->slavecount,
-			agg->max_util.u.f);
+	if (!terse) {
+		log_info(", aggrios=%u/%u, aggrmerge=%u/%u, aggrticks=%u/%u,"
+				" aggrin_queue=%u, aggrutil=%3.2f%%",
+				agg->ios[0] / agg->slavecount,
+				agg->ios[1] / agg->slavecount,
+				agg->merges[0] / agg->slavecount,
+				agg->merges[1] / agg->slavecount,
+				agg->ticks[0] / agg->slavecount,
+				agg->ticks[1] / agg->slavecount,
+				agg->time_in_queue / agg->slavecount,
+				agg->max_util.u.f);
+	} else {
+		log_info("slaves;%u;%u;%u;%u;%u;%u;%u;%3.2f%%",
+				agg->ios[0] / agg->slavecount,
+				agg->ios[1] / agg->slavecount,
+				agg->merges[0] / agg->slavecount,
+				agg->merges[1] / agg->slavecount,
+				agg->ticks[0] / agg->slavecount,
+				agg->ticks[1] / agg->slavecount,
+				agg->time_in_queue / agg->slavecount,
+				agg->max_util.u.f);
+	}
 }
 
 static void aggregate_slaves_stats(struct disk_util *masterdu)
@@ -518,7 +530,8 @@
 	last_majdev = last_mindev = -1;
 }
 
-void print_disk_util(struct disk_util_stat *dus, struct disk_util_agg *agg)
+void print_disk_util(struct disk_util_stat *dus, struct disk_util_agg *agg,
+		     int terse)
 {
 	double util;
 
@@ -529,24 +542,33 @@
 	if (agg->slavecount)
 		log_info("  ");
 
-	log_info("  %s: ios=%u/%u, merge=%u/%u, ticks=%u/%u, "
-		 "in_queue=%u, util=%3.2f%%", dus->name,
+	if (!terse) {
+		log_info("  %s: ios=%u/%u, merge=%u/%u, ticks=%u/%u, "
+			 "in_queue=%u, util=%3.2f%%", dus->name,
 					dus->ios[0], dus->ios[1],
 					dus->merges[0], dus->merges[1],
 					dus->ticks[0], dus->ticks[1],
 					dus->time_in_queue, util);
+	} else {
+		log_info(";%s;%u;%u;%u;%u;%lu;%lu;%u;%u;%u;%u;%3.2f%%",
+					dus->name, dus->ios[0], dus->ios[1],
+					dus->merges[0], dus->merges[1],
+					dus->ticks[0], dus->ticks[1],
+					dus->time_in_queue, util);
+	}
 
 	/*
 	 * If the device has slaves, aggregate the stats for
 	 * those slave devices also.
 	 */
 	if (agg->slavecount)
-		show_agg_stats(agg);
+		show_agg_stats(agg, terse);
 
-	log_info("\n");
+	if (!terse)
+		log_info("\n");
 }
 
-void show_disk_util(void)
+void show_disk_util(int terse)
 {
 	struct flist_head *entry;
 	struct disk_util *du;
@@ -554,12 +576,13 @@
 	if (flist_empty(&disk_list))
 		return;
 
-	log_info("\nDisk stats (read/write):\n");
+	if (!terse)
+		log_info("\nDisk stats (read/write):\n");
 
 	flist_for_each(entry, &disk_list) {
 		du = flist_entry(entry, struct disk_util, list);
 
 		aggregate_slaves_stats(du);
-		print_disk_util(&du->dus, &du->agg);
+		print_disk_util(&du->dus, &du->agg, terse);
 	}
 }