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))
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)
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;
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);
&icd->time);
if (!td->o.disable_clat) {
- add_clat_sample(td, idx, usec);
+ add_clat_sample(td, idx, usec, bytes);
io_u_mark_latency(td, usec);
}
if (!td->o.disable_bw)
- add_bw_sample(td, idx, &icd->time);
+ add_bw_sample(td, idx, bytes, &icd->time);
}
if (td_write(td) && idx == DDIR_WRITE &&
unsigned long slat_time;
slat_time = utime_since(&io_u->start_time, &io_u->issue_time);
- add_slat_sample(td, io_u->ddir, slat_time);
+ add_slat_sample(td, io_u->ddir, io_u->xfer_buflen, slat_time);
}
}