summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSage Weil <sage@inktank.com>2013-06-10 11:55:16 -0700
committerSage Weil <sage@inktank.com>2013-06-13 10:52:17 -0700
commit449bcd6f81e8aa8282dc8d2049188303b204c7b6 (patch)
treed460e231f57a4a0c517c223f292f82b5951d3eab
parentb56c96548868b3de54f56ecee6b8a984aeb480e2 (diff)
downloadceph-449bcd6f81e8aa8282dc8d2049188303b204c7b6.tar.gz
osd: close classes on shutdown
Signed-off-by: Sage Weil <sage@inktank.com>
-rw-r--r--src/osd/ClassHandler.cc7
-rw-r--r--src/osd/ClassHandler.h3
-rw-r--r--src/osd/OSD.cc1
3 files changed, 10 insertions, 1 deletions
diff --git a/src/osd/ClassHandler.cc b/src/osd/ClassHandler.cc
index 6675e9e4fc4..5af2ac01a0f 100644
--- a/src/osd/ClassHandler.cc
+++ b/src/osd/ClassHandler.cc
@@ -31,6 +31,13 @@ int ClassHandler::open_class(const string& cname, ClassData **pcls)
return 0;
}
+void ClassHandler::shutdown()
+{
+ for (map<string, ClassData>::iterator p = classes.begin(); p != classes.end(); ++p) {
+ dlclose(p->second.handle);
+ }
+}
+
ClassHandler::ClassData *ClassHandler::_get_class(const string& cname)
{
ClassData *cls;
diff --git a/src/osd/ClassHandler.h b/src/osd/ClassHandler.h
index f336d861fbc..733ed01a35d 100644
--- a/src/osd/ClassHandler.h
+++ b/src/osd/ClassHandler.h
@@ -82,7 +82,8 @@ public:
ClassData *register_class(const char *cname);
void unregister_class(ClassData *cls);
-
+
+ void shutdown();
};
diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc
index fb4638550ca..1b5262d4d51 100644
--- a/src/osd/OSD.cc
+++ b/src/osd/OSD.cc
@@ -1573,6 +1573,7 @@ int OSD::shutdown()
service.shutdown();
op_tracker.on_shutdown();
+ class_handler->shutdown();
client_messenger->shutdown();
cluster_messenger->shutdown();
hbclient_messenger->shutdown();