Hi cephers, I plan to unify ceph plugins. Currently we have 2 plugin trees: 1) erasure-code/ErasureCodePluginRegistry type of plugin: class ErasureCodePlugin instances: class ErasureCodePluginJerasure class ErasureCodePluginSelectJerasure class ErasureCodePluginLrc class ErasureCodePluginSelectShec class ErasureCodePluginShec 2) common/PluginRegistry type of plugin: class Plugin specialization: class CompressionPlugin instances: class CompressionPluginSnappy class CompressionPluginZlib future: specialization: class CryptoPlugin instances: class CryptoPluginISAL The plan: 1) Get rid of EraseCodePluginRegistry. 2) Make EraseCodePlugin a specialization of class Plugin. 3) PluginRegistry will use ceph configuration for places to search for plugins. 4) PluginRegistry.load(...) will no longer get directory to search. 5) PluginRegistry will only return std::shared_ptr<Plugin> references. 6) PluginRegistry.remove(...) will only delete internal std::shared_ptr<Plugin>. Actual dlclose() will be delayed until all references are deleted. 7) static EraseCodePlugin::factory(...), the replacement of EraseCodePluginRegistry::factory(...) will return std::dynamic_pointer_cast<EraseCodePlugin>(located_plugin) 8) Extend class Plugin to force instances to provide "type" and "name". I would really enjoy comments if such unification is beneficial, and comments what should be done better. Best Regards, Adam Kupczyk -- To unsubscribe from this list: send the line "unsubscribe ceph-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html