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);
+ else if (io_u->ddir == DDIR_READ) {
+ /*
+ * Reset the buf_filled parameters so next time if the
+ * buffer is used for writes it is refilled.
+ */
+ io_u->buf_filled = 0;
+ io_u->buf_filled_len = 0;
+ }
}
/*
if (!td->o.disable_clat || !td->o.disable_bw)
lusec = utime_since(&io_u->issue_time,
&icd->time);
+ if (!td->o.disable_lat) {
+ unsigned long tusec;
+ tusec = utime_since(&io_u->start_time,
+ &icd->time);
+ add_lat_sample(td, idx, tusec, bytes);
+ }
if (!td->o.disable_clat) {
add_clat_sample(td, idx, lusec, bytes);
io_u_mark_latency(td, lusec);
void io_u_fill_buffer(struct thread_data *td, struct io_u *io_u,
unsigned int max_bs)
{
- long *ptr = io_u->buf;
-
- if (!td->o.zero_buffers) {
- unsigned long r = __rand(&__fio_rand_state);
-
- if (sizeof(int) != sizeof(*ptr))
- r *= (unsigned long) __rand(&__fio_rand_state);
-
- while ((void *) ptr - io_u->buf < max_bs) {
- *ptr = r;
- ptr++;
- r *= GOLDEN_RATIO_PRIME;
- r >>= 3;
- }
- } else
- memset(ptr, 0, max_bs);
+ if (!td->o.zero_buffers)
+ fill_random_buf(io_u->buf, max_bs);
+ else
+ memset(io_u->buf, 0, max_bs);
}