The following changes since commit 239a11de15959849a69508ff7cb46be114599baf: android: use ashmem (2013-05-01 21:28:49 +0200) are available in the git repository at: git://git.kernel.dk/fio.git master Jens Axboe (1): Honor random/zero/compressible settings for filling an initial file filesetup.c | 3 ++- io_u.c | 28 ++++++++++++++++++---------- ioengine.h | 1 + 3 files changed, 21 insertions(+), 11 deletions(-) --- Diff of recent changes: diff --git a/filesetup.c b/filesetup.c index 9f186fb..6427f3e 100644 --- a/filesetup.c +++ b/filesetup.c @@ -127,7 +127,6 @@ static int extend_file(struct thread_data *td, struct fio_file *f) } b = malloc(td->o.max_bs[DDIR_WRITE]); - memset(b, 0, td->o.max_bs[DDIR_WRITE]); left = f->real_file_size; while (left && !td->terminate) { @@ -135,6 +134,8 @@ static int extend_file(struct thread_data *td, struct fio_file *f) if (bs > left) bs = left; + fill_io_buffer(td, b, bs, bs); + r = write(f->fd, b, bs); if (r > 0) { diff --git a/io_u.c b/io_u.c index d03049e..2cf2b8d 100644 --- a/io_u.c +++ b/io_u.c @@ -1602,14 +1602,9 @@ void io_u_queued(struct thread_data *td, struct io_u *io_u) } } -/* - * "randomly" fill the buffer contents - */ -void io_u_fill_buffer(struct thread_data *td, struct io_u *io_u, - unsigned int min_write, unsigned int max_bs) +void fill_io_buffer(struct thread_data *td, void *buf, unsigned int min_write, + unsigned int max_bs) { - io_u->buf_filled_len = 0; - if (!td->o.zero_buffers) { unsigned int perc = td->o.compress_percentage; @@ -1617,10 +1612,23 @@ void io_u_fill_buffer(struct thread_data *td, struct io_u *io_u, unsigned int seg = min_write; seg = min(min_write, td->o.compress_chunk); - fill_random_buf_percentage(&td->buf_state, io_u->buf, + if (!seg) + seg = min_write; + + fill_random_buf_percentage(&td->buf_state, buf, perc, seg, max_bs); } else - fill_random_buf(&td->buf_state, io_u->buf, max_bs); + fill_random_buf(&td->buf_state, buf, max_bs); } else - memset(io_u->buf, 0, max_bs); + memset(buf, 0, max_bs); +} + +/* + * "randomly" fill the buffer contents + */ +void io_u_fill_buffer(struct thread_data *td, struct io_u *io_u, + unsigned int min_write, unsigned int max_bs) +{ + io_u->buf_filled_len = 0; + fill_io_buffer(td, io_u->buf, min_write, max_bs); } diff --git a/ioengine.h b/ioengine.h index d52b2b9..362ab3e 100644 --- a/ioengine.h +++ b/ioengine.h @@ -198,6 +198,7 @@ extern int __must_check io_u_queued_complete(struct thread_data *, int, uint64_t extern void io_u_queued(struct thread_data *, struct io_u *); extern void io_u_log_error(struct thread_data *, struct io_u *); extern void io_u_mark_depth(struct thread_data *, unsigned int); +extern void fill_io_buffer(struct thread_data *, void *, unsigned int, unsigned int); extern void io_u_fill_buffer(struct thread_data *td, struct io_u *, unsigned int, unsigned int); void io_u_mark_complete(struct thread_data *, unsigned int); void io_u_mark_submit(struct thread_data *, unsigned int); -- To unsubscribe from this list: send the line "unsubscribe fio" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html