X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=fio.h;h=7a4b1d19c8ebfa527814bee59976b014b5de9a99;hb=a2f77c9f5f01186882762264100b6d30ee77a55d;hp=c168fe708bcb3e49a9dda7762a94975881159dc7;hpb=0c6e75175bcaf8d05bfa88aa8caa584fbb848b74;p=fio.git diff --git a/fio.h b/fio.h index c168fe70..7a4b1d19 100644 --- a/fio.h +++ b/fio.h @@ -428,8 +428,21 @@ struct thread_data { */ struct list_head io_hist_list; struct list_head io_log_list; + + /* + * timeout handling + */ + struct timeval timeout_end; + struct itimerval timer; }; +/* + * 30 second per-io_u timeout, with 5 second intervals to avoid resetting + * the timer on each queue operation. + */ +#define IO_U_TIMEOUT_INC 5 +#define IO_U_TIMEOUT 30 + #define __td_verror(td, err, msg) \ do { \ if ((td)->error) \ @@ -564,6 +577,7 @@ extern void usec_sleep(struct thread_data *, unsigned long); extern void rate_throttle(struct thread_data *, unsigned long, unsigned int, int); extern void fill_start_time(struct timeval *); extern void fio_gettime(struct timeval *, void *); +extern void set_genesis_time(void); /* * Init functions @@ -628,6 +642,8 @@ extern void requeue_io_u(struct thread_data *, struct io_u **); extern long __must_check io_u_sync_complete(struct thread_data *, struct io_u *, endio_handler *); extern long __must_check io_u_queued_complete(struct thread_data *, int, endio_handler *); extern void io_u_queued(struct thread_data *, struct io_u *); +extern void io_u_init_timeout(void); +extern void io_u_set_timeout(struct thread_data *); /* * io engine entry points