X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=fio.h;h=472fe9370c69f4c23907ac3af698da79c5da26cd;hp=55717c798a08c9192bb8eae8533a97d92d7122dd;hb=951417ad5aae0ff21493a1dff8b6d7ac63566403;hpb=303032ae4e13c7ac10b8198c40df98d95a4524a6 diff --git a/fio.h b/fio.h index 55717c79..472fe937 100644 --- a/fio.h +++ b/fio.h @@ -378,10 +378,14 @@ struct thread_stat { * IO depth and latency stats */ unsigned int io_u_map[FIO_IO_U_MAP_NR]; + unsigned int io_u_submit[FIO_IO_U_MAP_NR]; + unsigned int io_u_complete[FIO_IO_U_MAP_NR]; unsigned int io_u_lat_u[FIO_IO_U_LAT_U_NR]; unsigned int io_u_lat_m[FIO_IO_U_LAT_M_NR]; unsigned long total_io_u[2]; unsigned long short_io_u[2]; + unsigned long total_submit; + unsigned long total_complete; unsigned long long io_bytes[2]; unsigned long runtime[2]; @@ -446,6 +450,7 @@ struct thread_options { unsigned int write_lat_log; unsigned int write_bw_log; unsigned int norandommap; + unsigned int softrandommap; unsigned int bs_unaligned; unsigned int fsync_on_close; @@ -477,6 +482,7 @@ struct thread_options { unsigned int group_reporting; unsigned int fadvise_hint; unsigned int zero_buffers; + unsigned int refill_buffers; unsigned int time_based; char *read_iolog_file; @@ -558,10 +564,10 @@ struct thread_data { * Current IO depth and list of free and busy io_u's. */ unsigned int cur_depth; + unsigned int io_u_queued; struct list_head io_u_freelist; struct list_head io_u_busylist; struct list_head io_u_requeues; - unsigned int io_u_queued; /* * Rate state @@ -597,8 +603,7 @@ struct thread_data { * read/write mixed workload state */ os_random_state_t rwmix_state; - unsigned long long rwmix_bytes; - struct timeval rwmix_switch; + unsigned long rwmix_issues; enum fio_ddir rwmix_ddir; unsigned int ddir_nr; @@ -683,6 +688,7 @@ extern unsigned long long mlock_size; extern unsigned long page_mask, page_size; extern int read_only; extern int eta_print; +extern unsigned long done_secs; extern char *job_section; extern struct thread_data *threads; @@ -699,9 +705,9 @@ static inline void fio_ro_check(struct thread_data *td, struct io_u *io_u) } #define BLOCKS_PER_MAP (8 * sizeof(long)) -#define TO_MAP_BLOCK(td, f, b) (b) -#define RAND_MAP_IDX(td, f, b) (TO_MAP_BLOCK(td, f, b) / BLOCKS_PER_MAP) -#define RAND_MAP_BIT(td, f, b) (TO_MAP_BLOCK(td, f, b) & (BLOCKS_PER_MAP - 1)) +#define TO_MAP_BLOCK(f, b) (b) +#define RAND_MAP_IDX(f, b) (TO_MAP_BLOCK(f, b) / BLOCKS_PER_MAP) +#define RAND_MAP_BIT(f, b) (TO_MAP_BLOCK(f, b) & (BLOCKS_PER_MAP - 1)) #define MAX_JOBS (1024) @@ -905,7 +911,10 @@ extern void io_u_queued(struct thread_data *, struct io_u *); extern void io_u_log_error(struct thread_data *, struct io_u *); extern void io_u_init_timeout(void); extern void io_u_set_timeout(struct thread_data *); -extern void io_u_mark_depth(struct thread_data *, struct io_u *); +extern void io_u_mark_depth(struct thread_data *, unsigned int); +extern void io_u_fill_buffer(struct thread_data *td, struct io_u *, unsigned int); +void io_u_mark_complete(struct thread_data *, unsigned int); +void io_u_mark_submit(struct thread_data *, unsigned int); /* * io engine entry points @@ -979,6 +988,12 @@ extern void close_ioengine(struct thread_data *); } \ } while (0) +static inline void fio_file_reset(struct fio_file *f) +{ + f->last_free_lookup = 0; + f->last_pos = f->file_offset; +} + static inline void clear_error(struct thread_data *td) { td->error = 0;