From 17373ce2f38aa0d788d5c604cefd36a367bbbc27 Mon Sep 17 00:00:00 2001 From: Jens Axboe Date: Wed, 1 Nov 2017 11:02:30 -0600 Subject: [PATCH 1/1] io_u: wrap to beginning when end-of-file is reached for time_based The logic around using io_size isn't correct. Signed-off-by: Jens Axboe --- io_u.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/io_u.c b/io_u.c index 4246edff..5e4209d3 100644 --- a/io_u.c +++ b/io_u.c @@ -361,16 +361,13 @@ static int get_next_seq_offset(struct thread_data *td, struct fio_file *f, assert(ddir_rw(ddir)); + /* + * If we reach the end for a time based run, reset us back to 0 + * and invalidate the cache, if we need to. + */ if (f->last_pos[ddir] >= f->io_size + get_start_offset(td, f) && o->time_based) { - struct thread_options *o = &td->o; - uint64_t io_size = f->io_size + (f->io_size % o->min_bs[ddir]); - - if (io_size > f->last_pos[ddir]) - f->last_pos[ddir] = 0; - else - f->last_pos[ddir] = f->last_pos[ddir] - io_size; - + f->last_pos[ddir] = 0; loop_cache_invalidate(td, f); } -- 2.25.1