X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=client.c;h=f7726f7469c75fc54b2c9f06ff27c5d26278836e;hp=bc0275b639be6f7d0a1ecb46e4229e1abe99119b;hb=fb1a0dcdc0869f0c92c49f13e640c15f4ab3b7e2;hpb=7ab5b8d29ab4402f921b9d4d9a75d34aa9c69f69 diff --git a/client.c b/client.c index bc0275b6..f7726f74 100644 --- a/client.c +++ b/client.c @@ -32,6 +32,7 @@ static void handle_stop(struct fio_client *client); static void handle_start(struct fio_client *client, struct fio_net_cmd *cmd); static void convert_text(struct fio_net_cmd *cmd); +static void client_display_thread_status(struct jobs_eta *je); struct client_ops fio_client_ops = { .text = handle_text, @@ -40,7 +41,7 @@ struct client_ops fio_client_ops = { .group_stats = handle_gs, .stop = handle_stop, .start = handle_start, - .eta = display_thread_status, + .eta = client_display_thread_status, .probe = handle_probe, .eta_msec = FIO_CLIENT_DEF_ETA_MSEC, .client_type = FIO_CLIENT_TYPE_CLI, @@ -1058,9 +1059,6 @@ static void handle_ts(struct fio_client *client, struct fio_net_cmd *cmd) struct flist_head *opt_list = NULL; struct json_object *tsobj; - if (output_format & FIO_OUTPUT_TERSE) - return; - if (client->opt_lists && p->ts.thread_number <= client->jobs) opt_list = &client->opt_lists[p->ts.thread_number - 1]; @@ -1097,9 +1095,6 @@ static void handle_gs(struct fio_client *client, struct fio_net_cmd *cmd) { struct group_run_stats *gs = (struct group_run_stats *) cmd->payload; - if (output_format & FIO_OUTPUT_TERSE) - return; - if (output_format & FIO_OUTPUT_NORMAL) show_group_stats(gs, NULL); } @@ -1143,13 +1138,17 @@ static void handle_text(struct fio_client *client, struct fio_net_cmd *cmd) const char *buf = (const char *) pdu->buf; const char *name; int fio_unused ret; + struct buf_output out; + + buf_output_init(&out); name = client->name ? client->name : client->hostname; if (!client->skip_newline && !(output_format & FIO_OUTPUT_TERSE)) - fprintf(f_out, "<%s> ", name); - ret = fwrite(buf, pdu->buf_len, 1, f_out); - fflush(f_out); + __log_buf(&out, "<%s> ", name); + __log_buf(&out, "%s", buf); + log_info_buf(out.buf, out.buflen); + buf_output_free(&out); client->skip_newline = strchr(buf, '\n') == NULL; } @@ -1190,12 +1189,10 @@ static void handle_du(struct fio_client *client, struct fio_net_cmd *cmd) { struct cmd_du_pdu *du = (struct cmd_du_pdu *) cmd->payload; - if (output_format & FIO_OUTPUT_TERSE) - return; - if (!client->disk_stats_shown) { client->disk_stats_shown = true; - log_info("\nDisk stats (read/write):\n"); + if (!(output_format & FIO_OUTPUT_JSON)) + log_info("\nDisk stats (read/write):\n"); } if (output_format & FIO_OUTPUT_JSON) { @@ -1204,6 +1201,8 @@ static void handle_du(struct fio_client *client, struct fio_net_cmd *cmd) duobj = json_array_last_value_object(du_array); json_object_add_client_info(duobj, client); } + if (output_format & FIO_OUTPUT_TERSE) + print_disk_util(&du->dus, &du->agg, 1, NULL); if (output_format & FIO_OUTPUT_NORMAL) print_disk_util(&du->dus, &du->agg, 0, NULL); } @@ -1463,9 +1462,6 @@ static void handle_probe(struct fio_client *client, struct fio_net_cmd *cmd) const char *os, *arch; char bit[16]; - if (output_format & FIO_OUTPUT_TERSE) - return; - os = fio_get_os_string(probe->os); if (!os) os = "unknown"; @@ -1477,9 +1473,10 @@ static void handle_probe(struct fio_client *client, struct fio_net_cmd *cmd) sprintf(bit, "%d-bit", probe->bpp * 8); probe->flags = le64_to_cpu(probe->flags); - log_info("hostname=%s, be=%u, %s, os=%s, arch=%s, fio=%s, flags=%lx\n", - probe->hostname, probe->bigendian, bit, os, arch, - probe->fio_version, (unsigned long) probe->flags); + if (!(output_format & FIO_OUTPUT_JSON)) + log_info("hostname=%s, be=%u, %s, os=%s, arch=%s, fio=%s, flags=%lx\n", + probe->hostname, probe->bigendian, bit, os, arch, + probe->fio_version, (unsigned long) probe->flags); if (!client->name) client->name = strdup((char *) probe->hostname); @@ -1536,7 +1533,7 @@ static struct cmd_iolog_pdu *convert_iolog_gz(struct fio_net_cmd *cmd, #ifdef CONFIG_ZLIB struct cmd_iolog_pdu *ret; z_stream stream; - uint32_t nr_samples; + uint64_t nr_samples; size_t total; char *p; @@ -2112,3 +2109,9 @@ int fio_handle_clients(struct client_ops *ops) free(pfds); return retval || error_clients; } + +static void client_display_thread_status(struct jobs_eta *je) +{ + if (!(output_format & FIO_OUTPUT_JSON)) + display_thread_status(je); +}