summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
daa8991)
You end up with different results if you run this terse output
on a local system which also runs its own backend Vs running a
client to connect to a remote server which is running fio as a
backend only. The reason is the client ops handle printing of
threads / disk utils separately. The terse output created *by*
the backend is the right and expected output, so just use that,
and we can piggy back off of the fact that the server will send
its own output via FIO_NET_CMD_TEXT.
Another solution is to address getting the disk util data sent
to be cached locally, and then upon handle_ts() print that, but that
would require significant re-architecturing.
Terse output is supposed to be just that, terse. This implies
that it will not be clear from what backend data came from, but
for this the best strategy is to *extend* the terse version with
yet another field, the remote hostname/ip address.
Signed-off-by: Luis Chamberlain <mcgrof@kernel.org>
struct flist_head *opt_list = NULL;
struct json_object *tsobj;
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];
if (client->opt_lists && p->ts.thread_number <= client->jobs)
opt_list = &client->opt_lists[p->ts.thread_number - 1];
{
struct group_run_stats *gs = (struct group_run_stats *) cmd->payload;
{
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);
}
if (output_format & FIO_OUTPUT_NORMAL)
show_group_stats(gs, NULL);
}
name = client->name ? client->name : client->hostname;
name = client->name ? client->name : client->hostname;
- if (!client->skip_newline)
+ 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);
fprintf(f_out, "<%s> ", name);
ret = fwrite(buf, pdu->buf_len, 1, f_out);
fflush(f_out);
{
struct cmd_du_pdu *du = (struct cmd_du_pdu *) cmd->payload;
{
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 (!client->disk_stats_shown) {
client->disk_stats_shown = true;
log_info("\nDisk stats (read/write):\n");
duobj = json_array_last_value_object(du_array);
json_object_add_client_info(duobj, client);
}
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);
}
if (output_format & FIO_OUTPUT_NORMAL)
print_disk_util(&du->dus, &du->agg, 0, NULL);
}
const char *os, *arch;
char bit[16];
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";
os = fio_get_os_string(probe->os);
if (!os)
os = "unknown";
if (is_backend) {
fio_server_send_job_options(opt_lists[i], i);
fio_server_send_ts(ts, rs);
if (is_backend) {
fio_server_send_job_options(opt_lists[i], i);
fio_server_send_ts(ts, rs);
+ if (output_format & FIO_OUTPUT_TERSE)
+ show_thread_status_terse(ts, rs, &output[__FIO_OUTPUT_TERSE]);
} else {
if (output_format & FIO_OUTPUT_TERSE)
show_thread_status_terse(ts, rs, &output[__FIO_OUTPUT_TERSE]);
} else {
if (output_format & FIO_OUTPUT_TERSE)
show_thread_status_terse(ts, rs, &output[__FIO_OUTPUT_TERSE]);