do {
r = os_random_long(&td->random_state);
b = ((max_blocks - 1) * r / (unsigned long long) (RAND_MAX+1.0));
+ if (td->norandommap)
+ break;
rb = b + (f->file_offset / td->min_bs);
loops--;
} while (!random_map_free(td, f, rb) && loops);
else {
r = os_random_long(&td->bsrange_state);
buflen = (1 + (double) (td->max_bs - 1) * r / (RAND_MAX + 1.0));
- buflen = (buflen + td->min_bs - 1) & ~(td->min_bs - 1);
+ if (!td->bs_unaligned)
+ buflen = (buflen + td->min_bs - 1) & ~(td->min_bs - 1);
}
if (buflen > td->io_size - td->this_io_bytes[td->ddir]) {
/*
* If using a write iolog, store this entry.
*/
- if (td->write_iolog)
+ if (td->write_iolog_file)
write_iolog_put(td, io_u);
io_u->file = f;
if (!queue_full(td)) {
io_u = list_entry(td->io_u_freelist.next, struct io_u, list);
+ io_u->buflen = 0;
io_u->error = 0;
io_u->resid = 0;
list_del(&io_u->list);
return NULL;
}
- if (!td->read_iolog && !td->sequential)
+ if (!td->read_iolog && !td->sequential && !td->norandommap)
mark_random_map(td, f, io_u);
f->last_pos += io_u->buflen;