Skip to content

Commit

Permalink
add __load_ioengine() to separate ioengine loading from td context
Browse files Browse the repository at this point in the history
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 <[email protected]>
Signed-off-by: Jens Axboe <[email protected]>
  • Loading branch information
kusumi authored and axboe committed Aug 31, 2017
1 parent 81647a9 commit 97bb54c
Showing 1 changed file with 19 additions and 20 deletions.
39 changes: 19 additions & 20 deletions ioengines.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -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;
Expand All @@ -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;
Expand All @@ -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;
}

0 comments on commit 97bb54c

Please sign in to comment.