From: Loic Dachary Date: Thu, 12 Dec 2013 13:03:26 +0000 (+0100) Subject: osd: conditionally disable dlclose of erasure code plugins X-Git-Tag: v0.75~65^2~6 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=ff9455baade41d5b82d9322cf0401a1c69b31945;p=ceph.git osd: conditionally disable dlclose of erasure code plugins When profiling, tools such as valgrind --tool=callgrind require that the dynamically loaded libraries are not dlclosed so they can collect usage information. The public ErasureCodePluginRegistry::disable_dlclose boolean is introduced for this purpose. Signed-off-by: Loic Dachary --- diff --git a/src/osd/ErasureCodePlugin.cc b/src/osd/ErasureCodePlugin.cc index 5d0b6904e1ea..d31b197391e2 100644 --- a/src/osd/ErasureCodePlugin.cc +++ b/src/osd/ErasureCodePlugin.cc @@ -37,12 +37,16 @@ ErasureCodePluginRegistry ErasureCodePluginRegistry::singleton; ErasureCodePluginRegistry::ErasureCodePluginRegistry() : lock("ErasureCodePluginRegistry::lock"), - loading(false) + loading(false), + disable_dlclose(false) { } ErasureCodePluginRegistry::~ErasureCodePluginRegistry() { + if (disable_dlclose) + return; + for (std::map::iterator i = plugins.begin(); i != plugins.end(); ++i) { diff --git a/src/osd/ErasureCodePlugin.h b/src/osd/ErasureCodePlugin.h index a2feb71695ab..1f5e46c6d276 100644 --- a/src/osd/ErasureCodePlugin.h +++ b/src/osd/ErasureCodePlugin.h @@ -42,6 +42,7 @@ namespace ceph { public: Mutex lock; bool loading; + bool disable_dlclose; std::map plugins; static ErasureCodePluginRegistry singleton;