X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;ds=sidebyside;f=io_u.c;h=94bf30034452277a91eaa2a0c9474b1174627abd;hb=640e94218b780e3d7b15758c760e59f3511f0933;hp=698952c7eb964bccb1c01feb2af1357108b8c0b8;hpb=5451792ecc9ec3507c222da00d90a8829013ed50;p=fio.git diff --git a/io_u.c b/io_u.c index 698952c7..94bf3003 100644 --- a/io_u.c +++ b/io_u.c @@ -286,8 +286,8 @@ static void io_u_mark_depth(struct thread_data *td) break; } - td->io_u_map[index]++; - td->total_io_u++; + td->ts.io_u_map[index]++; + td->ts.total_io_u++; } static void io_u_mark_latency(struct thread_data *td, unsigned long msec) @@ -321,7 +321,7 @@ static void io_u_mark_latency(struct thread_data *td, unsigned long msec) break; } - td->io_u_lat[index]++; + td->ts.io_u_lat[index]++; } /* @@ -335,9 +335,9 @@ static struct fio_file *get_next_file_rand(struct thread_data *td) do { long r = os_random_long(&td->next_file_state); - fileno = (unsigned int) ((double) (td->nr_files - 1) * r / (RAND_MAX + 1.0)); + fileno = (unsigned int) ((double) (td->open_files * r) / (RAND_MAX + 1.0)); f = &td->files[fileno]; - if (f->fd != -1) + if (f->open) return f; } while (1); } @@ -354,10 +354,10 @@ static struct fio_file *get_next_file_rr(struct thread_data *td) f = &td->files[td->next_file]; td->next_file++; - if (td->next_file >= td->nr_files) + if (td->next_file >= td->open_files) td->next_file = 0; - if (f->fd != -1) + if (f->open) break; f = NULL; @@ -441,7 +441,15 @@ struct io_u *get_io_u(struct thread_data *td) * No more to do for this file, close it */ io_u->file = NULL; - close_file(td, f); + td_io_close_file(td, f); + + /* + * probably not the right place to do this, but see + * if we need to open a new file + */ + if (td->nr_open_files < td->nr_files && + td->open_files != td->nr_files) + reopen_file(td, f); } while (1); if (td->zone_bytes >= td->zone_size) {