if (td->io_ops->init) {
ret = td->io_ops->init(td);
- if (ret && td->o.iodepth > 1) {
- log_err("fio: io engine init failed. Perhaps try"
- " reducing io depth?\n");
- }
+ if (ret)
+ log_err("fio: io engine %s init failed.%s\n",
+ td->io_ops->name,
+ td->o.iodepth > 1 ?
+ " Perhaps try reducing io depth?" : "");
+ else
+ td->io_ops_init = 1;
if (!td->error)
td->error = ret;
}
- if (!ret && td_ioengine_flagged(td, FIO_NOIO))
- td->flags |= TD_F_NOIO;
-
return ret;
}
{
struct flist_head *entry;
struct thread_data td;
+ struct ioengine_ops *io_ops;
char *sep;
int ret = 1;
if (!engine || !*engine) {
log_info("Available IO engines:\n");
flist_for_each(entry, &engine_list) {
- td.io_ops = flist_entry(entry, struct ioengine_ops,
- list);
- log_info("\t%s\n", td.io_ops->name);
+ io_ops = flist_entry(entry, struct ioengine_ops, list);
+ log_info("\t%s\n", io_ops->name);
}
return 0;
}
memset(&td, 0, sizeof(td));
- td.io_ops = load_ioengine(&td, engine);
- if (!td.io_ops) {
+ io_ops = load_ioengine(&td, engine);
+ if (!io_ops) {
log_info("IO engine %s not found\n", engine);
return 1;
}
- if (td.io_ops->options)
- ret = show_cmd_help(td.io_ops->options, sep);
+ if (io_ops->options)
+ ret = show_cmd_help(io_ops->options, sep);
else
- log_info("IO engine %s has no options\n", td.io_ops->name);
+ log_info("IO engine %s has no options\n", io_ops->name);
free_ioengine(&td);