client: put All clients section at end of normal output
authorVincent Fu <vincent.fu@wdc.com>
Mon, 25 Mar 2019 14:20:27 +0000 (10:20 -0400)
committerJens Axboe <axboe@kernel.dk>
Mon, 25 Mar 2019 14:23:12 +0000 (08:23 -0600)
When fio runs multiple jobs on servers, it is possible for the "All
clients" output to appear in the middle of output for the individual
jobs. This patch puts the "All clients" output into a separate buffer
and displays it after the output for all the individual jobs.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
client.c

index 8d7c03316513bdd2fa9a9dbea0576e968b9c7c7a..4cbffb62967028465d9352b2c41b1796a52c9c56 100644 (file)
--- a/client.c
+++ b/client.c
@@ -59,6 +59,7 @@ struct group_run_stats client_gs;
 int sum_stat_clients;
 
 static int sum_stat_nr;
 int sum_stat_clients;
 
 static int sum_stat_nr;
+static struct buf_output allclients;
 static struct json_object *root = NULL;
 static struct json_object *job_opt_object = NULL;
 static struct json_array *clients_array = NULL;
 static struct json_object *root = NULL;
 static struct json_object *job_opt_object = NULL;
 static struct json_array *clients_array = NULL;
@@ -1103,7 +1104,7 @@ static void handle_ts(struct fio_client *client, struct fio_net_cmd *cmd)
 
        if (++sum_stat_nr == sum_stat_clients) {
                strcpy(client_ts.name, "All clients");
 
        if (++sum_stat_nr == sum_stat_clients) {
                strcpy(client_ts.name, "All clients");
-               tsobj = show_thread_status(&client_ts, &client_gs, NULL, &client->buf);
+               tsobj = show_thread_status(&client_ts, &client_gs, NULL, &allclients);
                if (tsobj) {
                        json_object_add_client_info(tsobj, client);
                        json_array_add_value_object(clients_array, tsobj);
                if (tsobj) {
                        json_object_add_client_info(tsobj, client);
                        json_array_add_value_object(clients_array, tsobj);
@@ -2129,6 +2130,9 @@ int fio_handle_clients(struct client_ops *ops)
                }
        }
 
                }
        }
 
+       log_info_buf(allclients.buf, allclients.buflen);
+       buf_output_free(&allclients);
+
        fio_client_json_fini();
 
        free(pfds);
        fio_client_json_fini();
 
        free(pfds);