Add nr parameter to file_service_type
[fio.git] / io_u.c
diff --git a/io_u.c b/io_u.c
index e283e7276a84ca75b6a11de4d3c40d9dcd93e716..c9a344f27aff5ebcb4a405a34e2da72d0b0b0d4a 100644 (file)
--- a/io_u.c
+++ b/io_u.c
@@ -368,13 +368,23 @@ static struct fio_file *get_next_file_rr(struct thread_data *td)
 
 static struct fio_file *get_next_file(struct thread_data *td)
 {
+       struct fio_file *f;
+
        if (!td->nr_open_files)
                return NULL;
 
+       f = td->file_service_file;
+       if (f && f->open && td->file_service_left--)
+               return f;
+
        if (td->file_service_type == FIO_FSERVICE_RR)
-               return get_next_file_rr(td);
+               f = get_next_file_rr(td);
        else
-               return get_next_file_rand(td);
+               f = get_next_file_rand(td);
+
+       td->file_service_file = f;
+       td->file_service_left = td->file_service_nr - 1;
+       return f;
 }
 
 struct io_u *__get_io_u(struct thread_data *td)