#include "fio.h"
#include "hash.h"
#include "verify.h"
+#include "lib/rand.h"
struct io_completion_data {
int nr; /* input */
io_u->end_io = NULL;
}
- /*
- * We ran out, wait for async verify threads to finish and return one
- */
- if (!io_u && td->o.verify_async) {
- pthread_cond_wait(&td->free_cond, &td->io_u_lock);
- goto again;
- }
-
if (io_u) {
assert(io_u->flags & IO_U_F_FREE);
io_u->flags &= ~(IO_U_F_FREE | IO_U_F_FREE_DEF);
flist_add(&io_u->list, &td->io_u_busylist);
td->cur_depth++;
io_u->flags |= IO_U_F_IN_CUR_DEPTH;
+ } else if (td->o.verify_async) {
+ /*
+ * We ran out, wait for async verify threads to finish and
+ * return one
+ */
+ pthread_cond_wait(&td->free_cond, &td->io_u_lock);
+ goto again;
}
td_io_u_unlock(td);
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 = rand() * GOLDEN_RATIO_PRIME;
+ *ptr = r;
ptr++;
+ r *= GOLDEN_RATIO_PRIME;
+ r >>= 3;
}
} else
memset(ptr, 0, max_bs);