X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=fio.h;h=8171b9ab7f4e08f3c60e53339401460bcac11a9c;hp=b2dade90aa42f5242e60eb8d1696310dc8343290;hb=86310a1fffc92de6eef9be0c3359506642d31746;hpb=7582368670f2025a1f810bd4ffb5ca91e278b66a diff --git a/fio.h b/fio.h index b2dade90..8171b9ab 100644 --- a/fio.h +++ b/fio.h @@ -25,7 +25,7 @@ #include "debug.h" #include "file.h" #include "io_ddir.h" -#include "ioengine.h" +#include "ioengines.h" #include "iolog.h" #include "helpers.h" #include "options.h" @@ -39,6 +39,7 @@ #include "server.h" #include "stat.h" #include "flow.h" +#include "io_u.h" #include "io_u_queue.h" #include "workqueue.h" #include "steadystate.h" @@ -74,7 +75,7 @@ enum { TD_F_VER_NONE = 1U << 5, TD_F_PROFILE_OPS = 1U << 6, TD_F_COMPRESS = 1U << 7, - TD_F_NOIO = 1U << 8, + TD_F_RESERVED = 1U << 8, /* not used */ TD_F_COMPRESS_LOG = 1U << 9, TD_F_VSTATE_SAVED = 1U << 10, TD_F_NEED_LOCK = 1U << 11, @@ -99,6 +100,8 @@ enum { FIO_DEDUPE_OFF, FIO_RAND_POISSON_OFF, FIO_RAND_ZONE_OFF, + FIO_RAND_POISSON2_OFF, + FIO_RAND_POISSON3_OFF, FIO_RAND_NR_OFFS, }; @@ -121,7 +124,6 @@ enum { * Per-thread/process specific data. Only used for the network client * for now. */ -struct sk_out; void sk_out_assign(struct sk_out *); void sk_out_drop(void); @@ -205,8 +207,6 @@ struct thread_data { void *iolog_buf; FILE *iolog_f; - char *sysfs_root; - unsigned long rand_seeds[FIO_RAND_NR_OFFS]; struct frand_state bsrange_state; @@ -233,6 +233,7 @@ struct thread_data { * to any of the available IO engines. */ struct ioengine_ops *io_ops; + int io_ops_init; /* * IO engine private data and dlhandle. @@ -282,8 +283,8 @@ struct thread_data { unsigned long rate_blocks[DDIR_RWDIR_CNT]; unsigned long long rate_io_issue_bytes[DDIR_RWDIR_CNT]; struct timeval lastrate[DDIR_RWDIR_CNT]; - int64_t last_usec; - struct frand_state poisson_state; + int64_t last_usec[DDIR_RWDIR_CNT]; + struct frand_state poisson_state[DDIR_RWDIR_CNT]; /* * Enforced rate submission/completion workqueue @@ -492,7 +493,7 @@ static inline int should_fsync(struct thread_data *td) { if (td->last_was_sync) return 0; - if (td_write(td) || td_rw(td) || td->o.override_sync) + if (td_write(td) || td->o.override_sync) return 1; return 0; @@ -619,6 +620,11 @@ extern int __must_check allocate_io_mem(struct thread_data *); extern void free_io_mem(struct thread_data *); extern void free_threads_shm(void); +#ifdef FIO_INTERNAL +#define PTR_ALIGN(ptr, mask) \ + (char *) (((uintptr_t) (ptr) + (mask)) & ~(mask)) +#endif + /* * Reset stats after ramp time completes */ @@ -643,6 +649,9 @@ extern void lat_target_check(struct thread_data *); extern void lat_target_init(struct thread_data *); extern void lat_target_reset(struct thread_data *); +/* + * Iterates all threads/processes within all the defined jobs + */ #define for_each_td(td, i) \ for ((i) = 0, (td) = &threads[0]; (i) < (int) thread_number; (i)++, (td)++) #define for_each_file(td, f, i) \