X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=diskutil.c;h=074f1307d32212421f20833a8c73ee01b97fc5ab;hp=52d87f6433d85132b2ae2fd3e6bfdc127fc64393;hb=6efb21c218d4ec38c1a4d7dbb86f2028f122acaa;hpb=64666f8fe2242cbe4d804df2305924a9e43e8699 diff --git a/diskutil.c b/diskutil.c index 52d87f64..074f1307 100644 --- a/diskutil.c +++ b/diskutil.c @@ -495,13 +495,14 @@ void init_disk_util(struct thread_data *td) f->du = __init_disk_util(td, f); } -static void show_agg_stats(struct disk_util_agg *agg, int terse) +static void show_agg_stats(struct disk_util_agg *agg, int terse, + struct buf_output *out) { if (!agg->slavecount) return; if (!terse) { - log_info(", aggrios=%llu/%llu, aggrmerge=%llu/%llu, " + log_buf(out, ", aggrios=%llu/%llu, aggrmerge=%llu/%llu, " "aggrticks=%llu/%llu, aggrin_queue=%llu, " "aggrutil=%3.2f%%", (unsigned long long) agg->ios[0] / agg->slavecount, @@ -513,7 +514,7 @@ static void show_agg_stats(struct disk_util_agg *agg, int terse) (unsigned long long) agg->time_in_queue / agg->slavecount, agg->max_util.u.f); } else { - log_info(";slaves;%llu;%llu;%llu;%llu;%llu;%llu;%llu;%3.2f%%", + log_buf(out, ";slaves;%llu;%llu;%llu;%llu;%llu;%llu;%llu;%3.2f%%", (unsigned long long) agg->ios[0] / agg->slavecount, (unsigned long long) agg->ios[1] / agg->slavecount, (unsigned long long) agg->merges[0] / agg->slavecount, @@ -578,7 +579,7 @@ void disk_util_prune_entries(void) } void print_disk_util(struct disk_util_stat *dus, struct disk_util_agg *agg, - int terse) + int terse, struct buf_output *out) { double util = 0; @@ -589,9 +590,9 @@ void print_disk_util(struct disk_util_stat *dus, struct disk_util_agg *agg, if (!terse) { if (agg->slavecount) - log_info(" "); + log_buf(out, " "); - log_info(" %s: ios=%llu/%llu, merge=%llu/%llu, " + log_buf(out, " %s: ios=%llu/%llu, merge=%llu/%llu, " "ticks=%llu/%llu, in_queue=%llu, util=%3.2f%%", dus->name, (unsigned long long) dus->s.ios[0], @@ -603,7 +604,7 @@ void print_disk_util(struct disk_util_stat *dus, struct disk_util_agg *agg, (unsigned long long) dus->s.time_in_queue, util); } else { - log_info(";%s;%llu;%llu;%llu;%llu;%llu;%llu;%llu;%3.2f%%", + log_buf(out, ";%s;%llu;%llu;%llu;%llu;%llu;%llu;%llu;%3.2f%%", dus->name, (unsigned long long) dus->s.ios[0], (unsigned long long) dus->s.ios[1], @@ -619,10 +620,10 @@ void print_disk_util(struct disk_util_stat *dus, struct disk_util_agg *agg, * If the device has slaves, aggregate the stats for * those slave devices also. */ - show_agg_stats(agg, terse); + show_agg_stats(agg, terse, out); if (!terse) - log_info("\n"); + log_buf(out, "\n"); } void json_array_add_disk_util(struct disk_util_stat *dus, @@ -689,10 +690,12 @@ static void json_object_add_disk_utils(struct json_object *obj, } } -void show_disk_util(int terse, struct json_object *parent) +void show_disk_util(int terse, struct json_object *parent, + struct buf_output *out) { struct flist_head *entry; struct disk_util *du; + bool do_json; if (!disk_util_mutex) return; @@ -704,21 +707,24 @@ void show_disk_util(int terse, struct json_object *parent) return; } - if (output_format == FIO_OUTPUT_JSON) - assert(parent); + if ((output_format & FIO_OUTPUT_JSON) && parent) + do_json = true; + else + do_json = false; - if (!terse && output_format != FIO_OUTPUT_JSON) - log_info("\nDisk stats (read/write):\n"); + if (!terse && !do_json) + log_buf(out, "\nDisk stats (read/write):\n"); - if (output_format == FIO_OUTPUT_JSON) + if (do_json) json_object_add_disk_utils(parent, &disk_list); - else + if (output_format & ~(FIO_OUTPUT_JSON | FIO_OUTPUT_JSON_PLUS)) { 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, terse); + print_disk_util(&du->dus, &du->agg, terse, out); } + } fio_mutex_up(disk_util_mutex); }