diff options
author | Sage Weil <sage@inktank.com> | 2013-06-10 11:55:16 -0700 |
---|---|---|
committer | Sage Weil <sage@inktank.com> | 2013-06-13 10:52:17 -0700 |
commit | 449bcd6f81e8aa8282dc8d2049188303b204c7b6 (patch) | |
tree | d460e231f57a4a0c517c223f292f82b5951d3eab | |
parent | b56c96548868b3de54f56ecee6b8a984aeb480e2 (diff) | |
download | ceph-449bcd6f81e8aa8282dc8d2049188303b204c7b6.tar.gz |
osd: close classes on shutdown
Signed-off-by: Sage Weil <sage@inktank.com>
-rw-r--r-- | src/osd/ClassHandler.cc | 7 | ||||
-rw-r--r-- | src/osd/ClassHandler.h | 3 | ||||
-rw-r--r-- | src/osd/OSD.cc | 1 |
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(); |