X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=fio.c;h=0221ca5b959440952783ffcd7fb98e957e9d02d8;hp=81e9e90d6ae154477354dbe17ce11637cb65d2c5;hb=98aa62d863d78aaa725c37f2588aba415f5b224c;hpb=f48b467cba78af0843c7320caf841e2bee72fb1e diff --git a/fio.c b/fio.c index 81e9e90d..0221ca5b 100644 --- a/fio.c +++ b/fio.c @@ -45,7 +45,7 @@ int groupid = 0; 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; @@ -436,10 +436,10 @@ static void do_io(struct thread_data *td) 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; @@ -479,9 +479,23 @@ static void cleanup_io_u(struct thread_data *td) free_io_mem(td); } +/* + * "randomly" fill the buffer contents + */ +static void fill_rand_buf(struct io_u *io_u, int max_bs) +{ + int *ptr = io_u->buf; + + while ((void *) ptr - io_u->buf < max_bs) { + *ptr = rand() * 0x9e370001; + ptr++; + } +} + static int init_io_u(struct thread_data *td) { struct io_u *io_u; + unsigned int max_bs; int i, max_units; char *p; @@ -493,7 +507,8 @@ static int init_io_u(struct thread_data *td) 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; @@ -504,7 +519,10 @@ static int init_io_u(struct thread_data *td) 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, max_bs); + io_u->index = i; list_add(&io_u->list, &td->io_u_freelist); }