On Mon, Jun 29, 2020 at 6:25 PM Jeff Moyer <jmoyer@xxxxxxxxxx> wrote: > > Yigal Korman <ykorman@xxxxxxxxx> writes: > > > Signed-off-by: Yigal Korman <ykorman@xxxxxxxxx> > > --- > > ioengines.c | 8 +++++++- > > 1 file changed, 7 insertions(+), 1 deletion(-) > > > > diff --git a/ioengines.c b/ioengines.c > > index 78262bc1..20224e59 100644 > > --- a/ioengines.c > > +++ b/ioengines.c > > @@ -79,10 +79,16 @@ static struct ioengine_ops *find_ioengine(const char *name) > > static void *dlopen_external(struct thread_data *td, const char *engine) > > { > > char engine_path[PATH_MAX]; > > + void *dlhandle; > > > > sprintf(engine_path, "%s/lib%s.so", FIO_EXT_ENG_DIR, engine); > > > > - return dlopen(engine_path, RTLD_LAZY); > > + dlhandle = dlopen(engine_path, RTLD_LAZY); > > + if (!dlhandle) > > + log_info("Engine not available; Install the fio-engine-%s package\n", > > + engine); > > + > > + return dlhandle; > > } > > #else > > #define dlopen_external(td, engine) (NULL) > > This assumes fio is part of a package, and that's not always (often?) > the case. It may be that the engine simply wasn't built. I agree. This patch is more of a showcase of how to help package maintainers transition users to the new packaging model. I will drop it from the next patchset version. This patch might have made more sense if I had implemented a whitelist of engines that were compiled dynamically. Thanks, Yigal > > -Jeff >