fio: fix some struct alignment issues
[fio.git] / stat.h
diff --git a/stat.h b/stat.h
index 7a25415adb31cbe800488f313a5cedfb1ad10f32..d8a08034a5faf94c5097ad1f33623fed86a08ddb 100644 (file)
--- a/stat.h
+++ b/stat.h
@@ -7,7 +7,7 @@
 struct group_run_stats {
        uint64_t max_run[DDIR_RWDIR_CNT], min_run[DDIR_RWDIR_CNT];
        uint64_t max_bw[DDIR_RWDIR_CNT], min_bw[DDIR_RWDIR_CNT];
-       uint64_t io_kb[DDIR_RWDIR_CNT];
+       uint64_t iobytes[DDIR_RWDIR_CNT];
        uint64_t agg[DDIR_RWDIR_CNT];
        uint32_t kb_base;
        uint32_t unit_base;
@@ -198,10 +198,10 @@ struct thread_stat {
         */
        union {
                uint16_t continue_on_error;
-               uint64_t pad2;
+               uint32_t pad2;
        };
-       uint64_t total_err_count;
        uint32_t first_error;
+       uint64_t total_err_count;
 
        uint64_t nr_block_infos;
        uint32_t block_infos[MAX_NR_BLOCK_INFOS];
@@ -210,9 +210,29 @@ struct thread_stat {
        uint32_t unit_base;
 
        uint32_t latency_depth;
+       uint32_t pad3;
        uint64_t latency_target;
        fio_fp64_t latency_percentile;
        uint64_t latency_window;
+
+       uint64_t ss_dur;
+       uint32_t ss_state;
+       uint32_t ss_head;
+
+       fio_fp64_t ss_limit;
+       fio_fp64_t ss_slope;
+       fio_fp64_t ss_deviation;
+       fio_fp64_t ss_criterion;
+
+       union {
+               uint64_t *ss_iops_data;
+               uint64_t pad4;
+       };
+
+       union {
+               uint64_t *ss_bw_data;
+               uint64_t pad5;
+       };
 } __attribute__((packed));
 
 struct jobs_eta {
@@ -222,17 +242,17 @@ struct jobs_eta {
        uint32_t nr_pending;
        uint32_t nr_setting_up;
 
-       uint32_t files_open;
-
        uint64_t m_rate[DDIR_RWDIR_CNT], t_rate[DDIR_RWDIR_CNT];
-       uint32_t m_iops[DDIR_RWDIR_CNT], t_iops[DDIR_RWDIR_CNT];
        uint64_t rate[DDIR_RWDIR_CNT];
+       uint32_t m_iops[DDIR_RWDIR_CNT], t_iops[DDIR_RWDIR_CNT];
        uint32_t iops[DDIR_RWDIR_CNT];
        uint64_t elapsed_sec;
        uint64_t eta_sec;
        uint32_t is_pow2;
        uint32_t unit_base;
 
+       uint32_t files_open;
+
        /*
         * Network 'copy' of run_str[]
         */
@@ -281,7 +301,7 @@ extern void add_clat_sample(struct thread_data *, enum fio_ddir, unsigned long,
                                unsigned int, uint64_t);
 extern void add_slat_sample(struct thread_data *, enum fio_ddir, unsigned long,
                                unsigned int, uint64_t);
-extern void add_agg_sample(unsigned long, enum fio_ddir, unsigned int);
+extern void add_agg_sample(union io_sample_data, enum fio_ddir, unsigned int);
 extern void add_iops_sample(struct thread_data *, struct io_u *,
                                unsigned int);
 extern void add_bw_sample(struct thread_data *, struct io_u *,