FIO_RAND_SEQ_RAND_TRIM_OFF,
FIO_RAND_START_DELAY,
FIO_DEDUPE_OFF,
+ FIO_RAND_POISSON_OFF,
FIO_RAND_NR_OFFS,
};
enum {
IO_MODE_INLINE = 0,
- IO_MODE_OFFLOAD,
+ IO_MODE_OFFLOAD = 1,
+
+ RATE_PROCESS_LINEAR = 0,
+ RATE_PROCESS_POISSON = 1,
};
/*
struct io_log *bw_log;
struct io_log *iops_log;
- struct tp_data *tp_data;
+ struct workqueue log_compress_wq;
struct thread_data *parent;
unsigned long rate_blocks[DDIR_RWDIR_CNT];
unsigned long rate_io_issue_bytes[DDIR_RWDIR_CNT];
struct timeval lastrate[DDIR_RWDIR_CNT];
+ int64_t last_usec;
+ struct frand_state poisson_state;
/*
* Enforced rate submission/completion workqueue
*/
#define FIO_REAP_TIMEOUT 60
-#define TERMINATE_ALL (-1)
-extern void fio_terminate_threads(int);
+#define TERMINATE_ALL (-1U)
+extern void fio_terminate_threads(unsigned int);
extern void fio_mark_td_terminate(struct thread_data *);
/*
extern int load_blktrace(struct thread_data *, const char *, int);
#endif
+extern int io_queue_event(struct thread_data *td, struct io_u *io_u, int *ret,
+ enum fio_ddir ddir, uint64_t *bytes_issued, int from_verify,
+ struct timeval *comp_time);
+
/*
* Latency target helpers
*/