[PATCH] Randomly fill output buffers
authorJens Axboe <jens.axboe@oracle.com>
Mon, 30 Oct 2006 16:00:24 +0000 (17:00 +0100)
committerJens Axboe <jens.axboe@oracle.com>
Mon, 30 Oct 2006 16:00:24 +0000 (17:00 +0100)
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
fio.c
fio.h

diff --git a/fio.c b/fio.c
index 81e9e90d6ae154477354dbe17ce11637cb65d2c5..52caa4e94627222957f5c46f6a123ac9cc319278 100644 (file)
--- a/fio.c
+++ b/fio.c
@@ -479,6 +479,19 @@ 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, unsigned int max_bs)
+{
+       unsigned 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;
@@ -505,6 +518,9 @@ static int init_io_u(struct thread_data *td)
                INIT_LIST_HEAD(&io_u->list);
 
                io_u->buf = p + td->max_bs * i;
+               if (td_write(td) || td_rw(td))
+                       fill_rand_buf(io_u, td->max_bs);
+
                io_u->index = i;
                list_add(&io_u->list, &td->io_u_freelist);
        }
diff --git a/fio.h b/fio.h
index b30dec59c7244e357fe5371416159b8812575922..6a68ec8dc674b0af8b074faba0627ef9940e82ab 100644 (file)
--- a/fio.h
+++ b/fio.h
@@ -63,7 +63,7 @@ struct io_u {
        struct timeval start_time;
        struct timeval issue_time;
 
-       char *buf;
+       void *buf;
        unsigned int buflen;
        unsigned long long offset;