Fix overflow of counters incremented on each I/O operation
[fio.git] / client.c
index 6fe6d9f6b4cdceb0f699f7a9c5830e79b6491464..bff0adc0d972ed38f2cc7c72961b0e2849693c9a 100644 (file)
--- a/client.c
+++ b/client.c
@@ -905,21 +905,21 @@ static void convert_ts(struct thread_stat *dst, struct thread_stat *src)
        }
 
        for (i = 0; i < FIO_IO_U_MAP_NR; i++) {
-               dst->io_u_map[i]        = le32_to_cpu(src->io_u_map[i]);
-               dst->io_u_submit[i]     = le32_to_cpu(src->io_u_submit[i]);
-               dst->io_u_complete[i]   = le32_to_cpu(src->io_u_complete[i]);
+               dst->io_u_map[i]        = le64_to_cpu(src->io_u_map[i]);
+               dst->io_u_submit[i]     = le64_to_cpu(src->io_u_submit[i]);
+               dst->io_u_complete[i]   = le64_to_cpu(src->io_u_complete[i]);
        }
 
        for (i = 0; i < FIO_IO_U_LAT_N_NR; i++)
-               dst->io_u_lat_n[i]      = le32_to_cpu(src->io_u_lat_n[i]);
+               dst->io_u_lat_n[i]      = le64_to_cpu(src->io_u_lat_n[i]);
        for (i = 0; i < FIO_IO_U_LAT_U_NR; i++)
-               dst->io_u_lat_u[i]      = le32_to_cpu(src->io_u_lat_u[i]);
+               dst->io_u_lat_u[i]      = le64_to_cpu(src->io_u_lat_u[i]);
        for (i = 0; i < FIO_IO_U_LAT_M_NR; i++)
-               dst->io_u_lat_m[i]      = le32_to_cpu(src->io_u_lat_m[i]);
+               dst->io_u_lat_m[i]      = le64_to_cpu(src->io_u_lat_m[i]);
 
        for (i = 0; i < DDIR_RWDIR_CNT; i++)
                for (j = 0; j < FIO_IO_U_PLAT_NR; j++)
-                       dst->io_u_plat[i][j] = le32_to_cpu(src->io_u_plat[i][j]);
+                       dst->io_u_plat[i][j] = le64_to_cpu(src->io_u_plat[i][j]);
 
        for (i = 0; i < DDIR_RWDIR_CNT; i++) {
                dst->total_io_u[i]      = le64_to_cpu(src->total_io_u[i]);
@@ -1283,7 +1283,7 @@ static void client_flush_hist_samples(FILE *f, int hist_coarseness, void *sample
        int log_offset;
        uint64_t i, j, nr_samples;
        struct io_u_plat_entry *entry;
-       unsigned int *io_u_plat;
+       uint64_t *io_u_plat;
 
        int stride = 1 << hist_coarseness;
 
@@ -1306,9 +1306,9 @@ static void client_flush_hist_samples(FILE *f, int hist_coarseness, void *sample
                fprintf(f, "%lu, %u, %u, ", (unsigned long) s->time,
                                                io_sample_ddir(s), s->bs);
                for (j = 0; j < FIO_IO_U_PLAT_NR - stride; j += stride) {
-                       fprintf(f, "%lu, ", hist_sum(j, stride, io_u_plat, NULL));
+                       fprintf(f, "%llu, ", (unsigned long long)hist_sum(j, stride, io_u_plat, NULL));
                }
-               fprintf(f, "%lu\n", (unsigned long)
+               fprintf(f, "%llu\n", (unsigned long long)
                        hist_sum(FIO_IO_U_PLAT_NR - stride, stride, io_u_plat, NULL));
 
        }