X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=ioengines.c;h=17909636527175091a6296beff1d95ad65cbd9ac;hp=723f310d6e1bcb8d28a2e6f637212dcfa489f5f8;hb=b902ceb53977a12062c615ab529ca0c3422e3cff;hpb=2866c82d598e30604d8a92723c664ee6ced90fb0 diff --git a/ioengines.c b/ioengines.c index 723f310d..17909636 100644 --- a/ioengines.c +++ b/ioengines.c @@ -34,12 +34,23 @@ struct ioengine_ops *load_ioengine(struct thread_data *td, char *name) sprintf(engine_lib, "/usr/local/lib/fio/fio-engine-%s.o", engine); dlerror(); dlhandle = dlopen(engine_lib, RTLD_LAZY); - if (!dlhandle) - printf("bla: %s\n", dlerror()); + if (!dlhandle) { + td_vmsg(td, -1, dlerror()); + return NULL; + } ops = dlsym(dlhandle, "ioengine"); - if (!ops) - printf("get ops failed\n"); + if (!ops) { + td_vmsg(td, -1, dlerror()); + dlclose(dlhandle); + return NULL; + } + + if (ops->version != FIO_IOOPS_VERSION) { + log_err("bad ioops version %d (want %d)\n", ops->version, FIO_IOOPS_VERSION); + dlclose(dlhandle); + return NULL; + } ops->dlhandle = dlhandle; return ops;