Plugins unification

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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



[Index of Archives]     [CEPH Users]     [Ceph Large]     [Information on CEPH]     [Linux BTRFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux