X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=io_u.c;h=8c2f33b5e85e1e16bb3d6aea7564cbd5181a5e62;hb=1ca957384a2050e426f8f6ef8a3e493d7ceeb9ce;hp=71089390a401e0899b1d7bdca9f8297f19dbfb32;hpb=9a153e6efa862c547abfc745fed2c27fce8daf20;p=fio.git diff --git a/io_u.c b/io_u.c index 71089390..8c2f33b5 100644 --- a/io_u.c +++ b/io_u.c @@ -113,7 +113,8 @@ static int get_next_free_block(struct thread_data *td, struct fio_file *f, i = f->last_free_lookup; *b = (i * BLOCKS_PER_MAP); - while ((*b) * min_bs < f->real_file_size) { + while ((*b) * min_bs < f->real_file_size && + (*b) * min_bs < f->io_size) { if (f->file_map[i] != (unsigned int) -1) { *b += ffz(f->file_map[i]); if (*b > last_block(td, f, ddir)) @@ -248,7 +249,7 @@ static unsigned int get_next_buflen(struct thread_data *td, struct io_u *io_u) buflen = minbs; else { r = os_random_long(&td->bsrange_state); - if (!td->o.bssplit_nr) { + if (!td->o.bssplit_nr[ddir]) { buflen = 1 + (unsigned int) ((double) maxbs * (r / (OS_RAND_MAX + 1.0))); if (buflen < minbs) @@ -257,8 +258,8 @@ static unsigned int get_next_buflen(struct thread_data *td, struct io_u *io_u) long perc = 0; unsigned int i; - for (i = 0; i < td->o.bssplit_nr; i++) { - struct bssplit *bsp = &td->o.bssplit[i]; + for (i = 0; i < td->o.bssplit_nr[ddir]; i++) { + struct bssplit *bsp = &td->o.bssplit[ddir][i]; buflen = bsp->bs; perc += bsp->perc; @@ -837,7 +838,7 @@ struct io_u *get_io_u(struct thread_data *td) f->last_pos = io_u->offset + io_u->buflen; - if (td->o.verify != VERIFY_NONE) + if (td->o.verify != VERIFY_NONE && io_u->ddir == DDIR_WRITE) populate_verify_io_u(td, io_u); else if (td->o.refill_buffers && io_u->ddir == DDIR_WRITE) io_u_fill_buffer(td, io_u, io_u->xfer_buflen);