From: Tomohiro Kusumi Date: Thu, 31 Aug 2017 20:13:08 +0000 (+0300) Subject: add __load_ioengine() to separate ioengine loading from td context X-Git-Tag: fio-3.1~23 X-Git-Url: https://git.kernel.dk/?p=fio.git;a=commitdiff_plain;h=97bb54c9606c6a84a6d779d89258b67a65f87047 add __load_ioengine() to separate ioengine loading from td context Add a sub function __load_ioengine(), which only takes name argument, to be called from load_ioengine(). No functional changes. This lets fio_show_ioengine_help() get rid of a local variable td which only existed to call load_ioengine(&td, ...) while this td had no actual thread context thus unneeded. Signed-off-by: Tomohiro Kusumi Signed-off-by: Jens Axboe --- diff --git a/ioengines.c b/ioengines.c index 0c631e85..e78b4f79 100644 --- a/ioengines.c +++ b/ioengines.c @@ -123,26 +123,31 @@ static struct ioengine_ops *dlopen_ioengine(struct thread_data *td, return ops; } +static struct ioengine_ops *__load_ioengine(const char *name) +{ + char engine[64]; + + engine[sizeof(engine) - 1] = '\0'; + strncpy(engine, name, sizeof(engine) - 1); + + /* + * linux libaio has alias names, so convert to what we want + */ + if (!strncmp(engine, "linuxaio", 8) || !strncmp(engine, "aio", 3)) + strcpy(engine, "libaio"); + + dprint(FD_IO, "load ioengine %s\n", engine); + return find_ioengine(engine); +} + struct ioengine_ops *load_ioengine(struct thread_data *td) { struct ioengine_ops *ops = NULL; const char *name = NULL; if (strcmp(td->o.ioengine, "external")) { - char engine[64]; - name = td->o.ioengine; - engine[sizeof(engine) - 1] = '\0'; - strncpy(engine, name, sizeof(engine) - 1); - - /* - * linux libaio has alias names, so convert to what we want - */ - if (!strncmp(engine, "linuxaio", 8) || !strncmp(engine, "aio", 3)) - strcpy(engine, "libaio"); - - dprint(FD_IO, "load ioengine %s\n", engine); - ops = find_ioengine(engine); + ops = __load_ioengine(name); } else if (td->o.ioengine_so_path) { name = td->o.ioengine_so_path; ops = dlopen_ioengine(td, name); @@ -558,7 +563,6 @@ int td_io_get_file_size(struct thread_data *td, struct fio_file *f) int fio_show_ioengine_help(const char *engine) { struct flist_head *entry; - struct thread_data td; struct ioengine_ops *io_ops; char *sep; int ret = 1; @@ -577,10 +581,7 @@ int fio_show_ioengine_help(const char *engine) sep++; } - memset(&td, 0, sizeof(td)); - - td.o.ioengine = (char *)engine; - io_ops = load_ioengine(&td); + io_ops = __load_ioengine(engine); if (!io_ops) { log_info("IO engine %s not found\n", engine); return 1; @@ -591,7 +592,5 @@ int fio_show_ioengine_help(const char *engine) else log_info("IO engine %s has no options\n", io_ops->name); - free_ioengine(&td); - return ret; }