From: Jens Axboe Date: Thu, 16 Oct 2008 18:36:51 +0000 (+0200) Subject: Kill io_u timeout handling X-Git-Tag: fio-1.23~7 X-Git-Url: https://git.kernel.dk/?p=fio.git;a=commitdiff_plain;h=62977e09a378a713b31d64c63e15adcf9f6f9d9d Kill io_u timeout handling It has never been enabled, get rid of it. Signed-off-by: Jens Axboe --- diff --git a/fio.c b/fio.c index 773f1069..7fb9490f 100644 --- a/fio.c +++ b/fio.c @@ -750,8 +750,6 @@ static int init_io_u(struct thread_data *td) flist_add(&io_u->list, &td->io_u_freelist); } - io_u_init_timeout(); - return 0; } @@ -972,7 +970,6 @@ static void *thread_main(void *data) } fio_gettime(&td->epoch, NULL); - memcpy(&td->timeout_end, &td->epoch, sizeof(td->epoch)); getrusage(RUSAGE_SELF, &td->ts.ru_start); runtime[0] = runtime[1] = 0; diff --git a/fio.h b/fio.h index 63cd83f5..14847498 100644 --- a/fio.h +++ b/fio.h @@ -632,12 +632,6 @@ struct thread_data { */ struct flist_head io_log_list; - /* - * timeout handling - */ - struct timeval timeout_end; - struct itimerval timer; - /* * for fileservice, how often to switch to a new file */ @@ -668,13 +662,6 @@ enum { FIO_ETA_NEVER, }; -/* - * 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, func) \ do { \ if ((td)->error) \ @@ -937,8 +924,6 @@ extern long __must_check io_u_sync_complete(struct thread_data *, struct io_u *) extern long __must_check io_u_queued_complete(struct thread_data *, int); 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 *, 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); diff --git a/io_u.c b/io_u.c index e7d1efa6..08969427 100644 --- a/io_u.c +++ b/io_u.c @@ -8,11 +8,6 @@ #include "fio.h" #include "hash.h" -/* - * Change this define to play with the timeout handling - */ -#undef FIO_USE_TIMEOUT - struct io_completion_data { int nr; /* input */ @@ -1035,86 +1030,3 @@ void io_u_fill_buffer(struct thread_data *td, struct io_u *io_u, } else memset(ptr, 0, max_bs); } - -#ifdef FIO_USE_TIMEOUT -void io_u_set_timeout(struct thread_data *td) -{ - assert(td->cur_depth); - - td->timer.it_interval.tv_sec = 0; - td->timer.it_interval.tv_usec = 0; - td->timer.it_value.tv_sec = IO_U_TIMEOUT + IO_U_TIMEOUT_INC; - td->timer.it_value.tv_usec = 0; - setitimer(ITIMER_REAL, &td->timer, NULL); - fio_gettime(&td->timeout_end, NULL); -} - -static void io_u_dump(struct io_u *io_u) -{ - unsigned long t_start = mtime_since_now(&io_u->start_time); - unsigned long t_issue = mtime_since_now(&io_u->issue_time); - - log_err("io_u=%p, t_start=%lu, t_issue=%lu\n", io_u, t_start, t_issue); - log_err(" buf=%p/%p, len=%lu/%lu, offset=%llu\n", io_u->buf, - io_u->xfer_buf, io_u->buflen, - io_u->xfer_buflen, - io_u->offset); - log_err(" ddir=%d, fname=%s\n", io_u->ddir, io_u->file->file_name); -} -#else -void io_u_set_timeout(struct thread_data fio_unused *td) -{ -} -#endif - -#ifdef FIO_USE_TIMEOUT -static void io_u_timeout_handler(int fio_unused sig) -{ - struct thread_data *td, *__td; - pid_t pid = getpid(); - struct flist_head *entry; - struct io_u *io_u; - int i; - - log_err("fio: io_u timeout\n"); - - /* - * TLS would be nice... - */ - td = NULL; - for_each_td(__td, i) { - if (__td->pid == pid) { - td = __td; - break; - } - } - - if (!td) { - log_err("fio: io_u timeout, can't find job\n"); - exit(1); - } - - if (!td->cur_depth) { - log_err("fio: timeout without pending work?\n"); - return; - } - - log_err("fio: io_u timeout: job=%s, pid=%d\n", td->o.name, td->pid); - - flist_for_each(entry, &td->io_u_busylist) { - io_u = flist_entry(entry, struct io_u, list); - - io_u_dump(io_u); - } - - td_verror(td, ETIMEDOUT, "io_u timeout"); - exit(1); -} -#endif - -void io_u_init_timeout(void) -{ -#ifdef FIO_USE_TIMEOUT - signal(SIGALRM, io_u_timeout_handler); -#endif -} diff --git a/ioengines.c b/ioengines.c index 1688c633..3ef0d032 100644 --- a/ioengines.c +++ b/ioengines.c @@ -234,13 +234,6 @@ int td_io_queue(struct thread_data *td, struct io_u *io_u) if (td->o.read_iolog_file) memcpy(&td->last_issue, &io_u->issue_time, sizeof(struct timeval)); - - /* - * for a sync engine, set the timeout upfront - */ - if (mtime_since(&td->timeout_end, &io_u->issue_time) - < IO_U_TIMEOUT) - io_u_set_timeout(td); } if (io_u->ddir != DDIR_SYNC) @@ -284,15 +277,6 @@ int td_io_queue(struct thread_data *td, struct io_u *io_u) if (td->o.read_iolog_file) memcpy(&td->last_issue, &io_u->issue_time, sizeof(struct timeval)); - - /* - * async engine, set the timeout here - */ - if (ret == FIO_Q_QUEUED && - (mtime_since(&td->timeout_end, &io_u->issue_time) - < IO_U_TIMEOUT)) { - io_u_set_timeout(td); - } } return ret;