Add sample job file for fixed submission rate
[fio.git] / stat.h
diff --git a/stat.h b/stat.h
index 8b4416cf2db82a77ac455c1df6e9e34dfebc55ab..dd340128537e744e9284358a126a0974a1b2462f 100644 (file)
--- a/stat.h
+++ b/stat.h
@@ -112,6 +112,28 @@ struct group_run_stats {
 #define FIO_IO_U_LIST_MAX_LEN 20 /* The size of the default and user-specified
                                        list of percentiles */
 
+/*
+ * Trim cycle count measurements
+ */
+#define MAX_NR_BLOCK_INFOS     8192
+#define BLOCK_INFO_STATE_SHIFT 29
+#define BLOCK_INFO_TRIMS(block_info)   \
+       ((block_info) & ((1 << BLOCK_INFO_STATE_SHIFT) - 1))
+#define BLOCK_INFO_STATE(block_info)           \
+       ((block_info) >> BLOCK_INFO_STATE_SHIFT)
+#define BLOCK_INFO(state, trim_cycles) \
+       ((trim_cycles) | ((state) << BLOCK_INFO_STATE_SHIFT))
+#define BLOCK_INFO_SET_STATE(block_info, state)        \
+       BLOCK_INFO(state, BLOCK_INFO_TRIMS(block_info))
+enum block_info_state {
+       BLOCK_STATE_UNINIT,
+       BLOCK_STATE_TRIMMED,
+       BLOCK_STATE_WRITTEN,
+       BLOCK_STATE_TRIM_FAILURE,
+       BLOCK_STATE_WRITE_FAILURE,
+       BLOCK_STATE_COUNT,
+} state;
+
 #define MAX_PATTERN_SIZE       512
 #define FIO_JOBNAME_SIZE       128
 #define FIO_JOBDESC_SIZE       256
@@ -180,6 +202,9 @@ struct thread_stat {
        uint64_t total_err_count;
        uint32_t first_error;
 
+       uint64_t nr_block_infos;
+       uint32_t block_infos[MAX_NR_BLOCK_INFOS];
+
        uint32_t kb_base;
        uint32_t unit_base;
 
@@ -261,4 +286,6 @@ static inline int usec_to_msec(unsigned long *min, unsigned long *max,
 #define __THREAD_RUNSTR_SZ(nr) ((nr) * 5)
 #define THREAD_RUNSTR_SZ       __THREAD_RUNSTR_SZ(thread_number)
 
+uint32_t *io_u_block_info(struct thread_data *td, struct io_u *io_u);
+
 #endif