Recent changes (master)

Jens Axboe
2015-03-18T12:00:04Z

The following changes since commit 95e564523d502e5a682ae7f6ee793ca4c9ca76ca:

rate: remove redundant code in rate_ddir() (2015-03-12 10:05:25 -0600)

are available in the git repository at:

git://git.kernel.dk/fio.git master

for you to fetch changes up to 7d1bb70f3d85d041b4b7dd926e98054fea980bdc:

Scramble IO buffers unless explicitly told not (2015-03-17 18:11:07 -0600)

----------------------------------------------------------------
Jens Axboe (3):
smalloc: don't crash on being passed a bad pointer
io_u: fix refill, should be random content
Scramble IO buffers unless explicitly told not

Zev Weiss (1):
init: fix exit status with bogus arguments

init.c | 3 +++
io_u.c | 7 +++++--
smalloc.c | 8 ++++++--
3 files changed, 14 insertions(+), 4 deletions(-)

---

Diff of recent changes:

diff --git a/init.c b/init.c
index 7aedf2b..95e26b8 100644
--- a/init.c
+++ b/init.c
@@ -2135,6 +2135,7 @@ int parse_cmd_line(int argc, char *argv[], int client_type)
td = NULL;
}
do_exit++;
+ exit_val = 1;
break;
}
fio_options_set_ioengine_opts(l_opts, td);
@@ -2153,6 +2154,7 @@ int parse_cmd_line(int argc, char *argv[], int client_type)
td = NULL;
}
do_exit++;
+ exit_val = 1;
}

if (!ret && !strcmp(opt, "ioengine")) {
@@ -2161,6 +2163,7 @@ int parse_cmd_line(int argc, char *argv[], int client_type)
put_job(td);
td = NULL;
do_exit++;
+ exit_val = 1;
break;
}
fio_options_set_ioengine_opts(l_opts, td);
diff --git a/io_u.c b/io_u.c
index 6567e10..a45dd40 100644
--- a/io_u.c
+++ b/io_u.c
@@ -1484,7 +1484,8 @@ struct io_u *get_io_u(struct thread_data *td)
io_u_fill_buffer(td, io_u,
td->o.min_bs[DDIR_WRITE],
io_u->xfer_buflen);
- } else if ((td->flags & TD_F_SCRAMBLE_BUFFERS) &&
+ }
+ if ((td->flags & TD_F_SCRAMBLE_BUFFERS) &&
!(td->flags & TD_F_COMPRESS))
do_scramble = 1;
if (td->flags & TD_F_VER_NONE) {
@@ -1895,8 +1896,10 @@ void fill_io_buffer(struct thread_data *td, void *buf, unsigned int min_write,
} while (left);
} else if (o->buffer_pattern_bytes)
fill_buffer_pattern(td, buf, max_bs);
- else
+ else if (o->zero_buffers)
memset(buf, 0, max_bs);
+ else
+ fill_random_buf(get_buf_state(td), buf, max_bs);
}

/*
diff --git a/smalloc.c b/smalloc.c
index b460d65..447d5c5 100644
--- a/smalloc.c
+++ b/smalloc.c
@@ -363,8 +363,12 @@ void sfree(void *ptr)

global_read_unlock();

- assert(pool);
- sfree_pool(pool, ptr);
+ if (pool) {
+ sfree_pool(pool, ptr);
+ return;
+ }
+
+ log_err("smalloc: ptr %p not from smalloc pool\n", ptr);
}

static void *__smalloc_pool(struct pool *pool, size_t size)