On 6/30/20 1:29 PM, Yigal Korman wrote: > 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. I'd say keep it, but make it a bit more generic so it applies to self built installs too. "IO Engine %s not available. Either the engine name is invalid, or you need to Install the fio-engine-%s package, or build fio with the necessary libraries available." Something like that. -- Jens Axboe