Fix the typehelp[] array
[fio.git] / client.c
index 60f7c6ab82767cab31cf30443e07affa15c32b51..bc0275b639be6f7d0a1ecb46e4229e1abe99119b 100644 (file)
--- a/client.c
+++ b/client.c
@@ -123,11 +123,19 @@ static int read_ini_data(int fd, void *data, size_t size)
        char *p = data;
        int ret = 0;
        FILE *fp;
+       int dupfd;
 
-       fp = fdopen(dup(fd), "r");
-       if (!fp)
+       dupfd = dup(fd);
+       if (dupfd < 0)
                return errno;
 
+       fp = fdopen(dupfd, "r");
+       if (!fp) {
+               ret = errno;
+               close(dupfd);
+               goto out;
+       }
+
        while (1) {
                ssize_t len;
                char buf[OPT_LEN_MAX+1], *sub;
@@ -158,6 +166,7 @@ static int read_ini_data(int fd, void *data, size_t size)
        }
 
        fclose(fp);
+out:
        return ret;
 }
 
@@ -1049,6 +1058,9 @@ 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];
 
@@ -1085,6 +1097,9 @@ 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);
 }
@@ -1131,7 +1146,7 @@ static void handle_text(struct fio_client *client, struct fio_net_cmd *cmd)
 
        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);
@@ -1175,6 +1190,9 @@ 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");
@@ -1186,8 +1204,6 @@ 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);
 }
@@ -1348,8 +1364,8 @@ static void client_flush_hist_samples(FILE *f, int hist_coarseness, void *sample
                entry = s->data.plat_entry;
                io_u_plat = entry->io_u_plat;
 
-               fprintf(f, "%lu, %u, %u, ", (unsigned long) s->time,
-                                               io_sample_ddir(s), s->bs);
+               fprintf(f, "%lu, %u, %llu, ", (unsigned long) s->time,
+                                               io_sample_ddir(s), (unsigned long long) s->bs);
                for (j = 0; j < FIO_IO_U_PLAT_NR - stride; j += stride) {
                        fprintf(f, "%llu, ", (unsigned long long)hist_sum(j, stride, io_u_plat, NULL));
                }
@@ -1447,6 +1463,9 @@ 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";
@@ -1638,7 +1657,7 @@ static struct cmd_iolog_pdu *convert_iolog(struct fio_net_cmd *cmd,
                s->time         = le64_to_cpu(s->time);
                s->data.val     = le64_to_cpu(s->data.val);
                s->__ddir       = le32_to_cpu(s->__ddir);
-               s->bs           = le32_to_cpu(s->bs);
+               s->bs           = le64_to_cpu(s->bs);
 
                if (ret->log_offset) {
                        struct io_sample_offset *so = (void *) s;