int thread_number = 0;
int shm_id = 0;
int temp_stall_ts;
-char *fio_inst_prefix = _INST_PREFIX;
+const char *fio_inst_prefix = _INST_PREFIX;
static volatile int startup_sem;
gettimeofday(&e, NULL);
usec = utime_since(&s, &e);
- rate_throttle(td, usec, icd.bytes_done[td->ddir]);
+ rate_throttle(td, usec, icd.bytes_done[td->ddir], td->ddir);
if (check_min_rate(td, &e)) {
- if (rate_quit)
+ if (exitall_on_terminate)
terminate_threads(td->groupid);
td_verror(td, ENOMEM);
break;
/*
* "randomly" fill the buffer contents
*/
-static void fill_rand_buf(struct io_u *io_u, unsigned int max_bs)
+static void fill_rand_buf(struct io_u *io_u, int max_bs)
{
- unsigned int *ptr = io_u->buf;
+ int *ptr = io_u->buf;
while ((void *) ptr - io_u->buf < max_bs) {
*ptr = rand() * 0x9e370001;
static int init_io_u(struct thread_data *td)
{
struct io_u *io_u;
+ unsigned int max_bs;
int i, max_units;
char *p;
else
max_units = td->iodepth;
- td->orig_buffer_size = td->max_bs * max_units + MASK;
+ max_bs = max(td->max_bs[DDIR_READ], td->max_bs[DDIR_WRITE]);
+ td->orig_buffer_size = max_bs * max_units + MASK;
if (allocate_io_mem(td))
return 1;
memset(io_u, 0, sizeof(*io_u));
INIT_LIST_HEAD(&io_u->list);
- io_u->buf = p + td->max_bs * i;
+ io_u->buf = p + max_bs * i;
if (td_write(td) || td_rw(td))
- fill_rand_buf(io_u, td->max_bs);
+ fill_rand_buf(io_u, max_bs);
io_u->index = i;
list_add(&io_u->list, &td->io_u_freelist);