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,
.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,
static void fio_client_json_fini(void)
{
+ struct buf_output out;
+
if (!(output_format & FIO_OUTPUT_JSON))
return;
- log_info("\n");
- json_print_object(root, NULL);
- log_info("\n");
+ buf_output_init(&out);
+ __log_buf(&out, "\n");
+ json_print_object(root, &out);
+ __log_buf(&out, "\n");
+ log_info_buf(out.buf, out.buflen);
+ buf_output_free(&out);
json_free_object(root);
root = NULL;
clients_array = NULL;
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)
- fprintf(f_out, "<%s> ", name);
- ret = fwrite(buf, pdu->buf_len, 1, f_out);
- fflush(f_out);
+ if (!client->skip_newline && !(output_format & FIO_OUTPUT_TERSE))
+ __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;
}
static void handle_du(struct fio_client *client, struct fio_net_cmd *cmd)
{
struct cmd_du_pdu *du = (struct cmd_du_pdu *) cmd->payload;
+ struct buf_output out;
+
+ buf_output_init(&out);
if (!client->disk_stats_shown) {
client->disk_stats_shown = true;
- log_info("\nDisk stats (read/write):\n");
+ if (!(output_format & FIO_OUTPUT_JSON))
+ __log_buf(&out, "\nDisk stats (read/write):\n");
}
if (output_format & FIO_OUTPUT_JSON) {
json_object_add_client_info(duobj, client);
}
if (output_format & FIO_OUTPUT_TERSE)
- print_disk_util(&du->dus, &du->agg, 1, NULL);
+ print_disk_util(&du->dus, &du->agg, 1, &out);
if (output_format & FIO_OUTPUT_NORMAL)
- print_disk_util(&du->dus, &du->agg, 0, NULL);
+ print_disk_util(&du->dus, &du->agg, 0, &out);
+ buf_output_free(&out);
}
static void convert_jobs_eta(struct jobs_eta *je)
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);
#ifdef CONFIG_ZLIB
struct cmd_iolog_pdu *ret;
z_stream stream;
- uint32_t nr_samples;
+ uint64_t nr_samples;
size_t total;
char *p;
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);
+}