Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[suggestion] dynamically-loaded backend #397

Open
mdorier opened this issue Nov 14, 2021 · 3 comments
Open

[suggestion] dynamically-loaded backend #397

mdorier opened this issue Nov 14, 2021 · 3 comments
Labels
enhancement Great First Contribution The issue is marked to be a contribution that has is suitable for prospect contributors. Thank you!

Comments

@mdorier
Copy link
Contributor

mdorier commented Nov 14, 2021

A feature that would be nice to add to IOR and mdtest is the possibility to provide the name of an API in the following format: "LIB:/path/to/my/libbackend.so:symbol_aiori, providing the path to a shared library to dlopen and the name of a symbol representing the ior_aiori_t object to dlsym from that library.

This would allow storage system developers to implement an IOR backend in the form of a shared library shipped with their storage system's source, instead of having to fork IOR and add a backend in IOR's source.

I have started looking into the IOR code for the best way to implement this. One of the difficulties, I think, is that all the backends need to be available from the start in order to parse options.

@JulianKunkel
Copy link
Collaborator

JulianKunkel commented Nov 14, 2021

Good thought. A problem with this is that dynamic library loading such as dlsym() isn't necessarily portable on all HPC systems. I reckon what we could do is to provide an aiori backend that would allow to load libraries, i.e., just routing calls through... That way we keep the current module structure hardbacked into the code while allowing for some use cases to route calls through... Would be easy to create e.g., a dlsym plugin and check if dlsym is available, if not, disable the build of this module...

@glennklockwood
Copy link
Contributor

I agree, having a dlsym aiori is a nice way to add this functionality without affecting the existing backends.

@JulianKunkel
Copy link
Collaborator

To conclude, we look for someone to create such a DLSYM-AIORI implementation.
I think would be a nice first contribution.

@JulianKunkel JulianKunkel added enhancement Great First Contribution The issue is marked to be a contribution that has is suitable for prospect contributors. Thank you! labels Jun 3, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement Great First Contribution The issue is marked to be a contribution that has is suitable for prospect contributors. Thank you!
Projects
None yet
Development

No branches or pull requests

3 participants