add __load_ioengine() to separate ioengine loading from td context
authorTomohiro Kusumi <tkusumi@tuxera.com>
Thu, 31 Aug 2017 20:13:08 +0000 (23:13 +0300)
committerJens Axboe <axboe@kernel.dk>
Thu, 31 Aug 2017 20:19:58 +0000 (14:19 -0600)
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 <tkusumi@tuxera.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
ioengines.c

index 0c631e8..e78b4f7 100644 (file)
@@ -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;
 }