X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=io_u.c;h=5e53b81443cda688bdb42163dc2a5af4cc28fe04;hp=558b0b072cef200dd140020c47008d29a1a01fcc;hb=71619dc28506f7b7b40905b942e992b02f0d5b96;hpb=1e97cce9f5a87a67293a05ec4533ed6968698b2e diff --git a/io_u.c b/io_u.c index 558b0b07..5e53b814 100644 --- a/io_u.c +++ b/io_u.c @@ -63,7 +63,7 @@ static int get_next_free_block(struct thread_data *td, struct fio_file *f, *b = 0; i = 0; - while ((*b) * td->rw_min_bs < f->file_size) { + while ((*b) * td->rw_min_bs < f->real_file_size) { if (f->file_map[i] != -1UL) { *b += ffz(f->file_map[i]); return 0; @@ -108,7 +108,7 @@ static int get_next_offset(struct thread_data *td, struct fio_file *f, b = f->last_pos / td->min_bs[ddir]; *offset = (b * td->min_bs[ddir]) + f->file_offset; - if (*offset > f->file_size) + if (*offset > f->real_file_size) return 1; return 0; @@ -227,6 +227,31 @@ static int fill_io_u(struct thread_data *td, struct fio_file *f, return 1; } +static void io_u_mark_depth(struct thread_data *td) +{ + int index = 0; + + switch (td->cur_depth) { + default: + index++; + case 32 ... 63: + index++; + case 16 ... 31: + index++; + case 8 ... 15: + index++; + case 4 ... 7: + index++; + case 2 ... 3: + index++; + case 1: + break; + } + + td->io_u_map[index]++; + td->total_io_u++; +} + struct io_u *__get_io_u(struct thread_data *td) { struct io_u *io_u = NULL; @@ -240,6 +265,7 @@ struct io_u *__get_io_u(struct thread_data *td) list_del(&io_u->list); list_add(&io_u->list, &td->io_u_busylist); td->cur_depth++; + io_u_mark_depth(td); } return io_u; @@ -267,13 +293,13 @@ struct io_u *get_io_u(struct thread_data *td, struct fio_file *f) return NULL; } - if (io_u->buflen + io_u->offset > f->file_size) { + if (io_u->buflen + io_u->offset > f->real_file_size) { if (td->io_ops->flags & FIO_RAWIO) { put_io_u(td, io_u); return NULL; } - io_u->buflen = f->file_size - io_u->offset; + io_u->buflen = f->real_file_size - io_u->offset; } if (io_u->ddir != DDIR_SYNC) {