The following changes since commit 0de5b26f6e177aacac0683306c47e0cbaf58b0b6:
Unify the time handling (2014-02-21 15:26:01 -0800)
are available in the git repository at:
git://git.kernel.dk/fio.git master
for you to fetch changes up to bcd27f7ae1ccebd2ac1778752bf8f13fa99600e9:
Fixup ->open_files if not given (2014-02-25 14:01:26 -0800)
----------------------------------------------------------------
Jens Axboe (4):
Ensure that fio_get_kb_base() doesn't assume 'data' is thread_options
Fix crash with --debug=file and NULL file return
net: fix accidental overwrite of more than just the address
Fixup ->open_files if not given
engines/net.c | 4 ++--
filesetup.c | 7 +++++++
io_u.c | 5 ++++-
options.c | 12 +++++++++++-
thread_options.h | 4 +++-
5 files changed, 27 insertions(+), 5 deletions(-)
---
Diff of recent changes:
diff --git a/engines/net.c b/engines/net.c
index 8b85a88..dd06861 100644
--- a/engines/net.c
+++ b/engines/net.c
@@ -913,10 +913,10 @@ static int fio_netio_setup_connect_inet(struct
thread_data *td,
if (is_ipv6(o)) {
af = AF_INET6;
- dst = &nd->addr6;
+ dst = &nd->addr6.sin6_addr;
} else {
af = AF_INET;
- dst = &nd->addr;
+ dst = &nd->addr.sin_addr;
}
if (fio_fill_addr(td, host, af, dst, &res))
diff --git a/filesetup.c b/filesetup.c
index f0e3b34..7669d70 100644
--- a/filesetup.c
+++ b/filesetup.c
@@ -1230,6 +1230,13 @@ int add_file(struct thread_data *td, const char *fname,
int numjob)
set_already_allocated(file_name);
+ /*
+ * For adding files after the fact - if openfiles= isn't
+ * given as an option, ensure we allow at least one file open
+ */
+ if (!td->o.open_files)
+ td->o.open_files = 1;
+
dprint(FD_FILE, "file %p \"%s\" added at %d\n", f, f->file_name,
cur_files);
diff --git a/io_u.c b/io_u.c
index 619fa25..a69efb7 100644
--- a/io_u.c
+++ b/io_u.c
@@ -1093,7 +1093,10 @@ static struct fio_file *__get_next_file(struct
thread_data *td)
td->file_service_file = f;
td->file_service_left = td->file_service_nr - 1;
out:
- dprint(FD_FILE, "get_next_file: %p [%s]\n", f, f->file_name);
+ if (f)
+ dprint(FD_FILE, "get_next_file: %p [%s]\n", f, f->file_name);
+ else
+ dprint(FD_FILE, "get_next_file: NULL\n");
return f;
}
diff --git a/options.c b/options.c
index 5355982..625d3a2 100644
--- a/options.c
+++ b/options.c
@@ -3790,6 +3790,7 @@ int fio_cmd_ioengine_option_parse(struct thread_data *td,
const char *opt,
void fio_fill_default_options(struct thread_data *td)
{
+ td->o.magic = OPT_MAGIC;
fill_default_options(td, fio_options);
}
@@ -3834,7 +3835,16 @@ unsigned int fio_get_kb_base(void *data)
struct thread_options *o = data;
unsigned int kb_base = 0;
- if (o)
+ /*
+ * This is a hack... For private options, *data is not holding
+ * a pointer to the thread_options, but to private data. This means
+ * we can't safely dereference it, but magic is first so mem wise
+ * it is valid. But this also means that if the job first sets
+ * kb_base and expects that to be honored by private options,
+ * it will be disappointed. We will return the global default
+ * for this.
+ */
+ if (o && o->magic == OPT_MAGIC)
kb_base = o->kb_base;
if (!kb_base)
kb_base = 1024;
diff --git a/thread_options.h b/thread_options.h
index b7a88ed..14a4e54 100644
--- a/thread_options.h
+++ b/thread_options.h
@@ -28,8 +28,10 @@ struct bssplit {
uint32_t perc;
};
+#define OPT_MAGIC 0x4f50544e
+
struct thread_options {
- int pad;
+ int magic;
char *description;
char *name;
char *directory;
--
To unsubscribe from this list: send the line "unsubscribe fio" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html