X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;ds=sidebyside;f=stat.h;h=dd340128537e744e9284358a126a0974a1b2462f;hb=00b2e311b25a2a53f5b07e6796fcd36aa6023035;hp=8aefe03c65099f2f9e157efe7718fc1f9314cef2;hpb=3d0ebb30e8f97934603aaf22e82b1cc8bb790765;p=fio.git diff --git a/stat.h b/stat.h index 8aefe03c..dd340128 100644 --- 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; @@ -214,6 +239,8 @@ struct jobs_eta { uint8_t run_str[]; } __attribute__((packed)); +extern struct fio_mutex *stat_mutex; + extern struct jobs_eta *get_jobs_eta(int force, size_t *size); extern void stat_init(void); @@ -259,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