summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Just <sam.just@inktank.com>2013-06-19 19:46:06 -0700
committerSamuel Just <sam.just@inktank.com>2013-06-19 19:46:06 -0700
commite9bf06d9916cc97dc1ee93abe3e94de308905592 (patch)
tree6c11edee212c0c15a066a4453b1764d0a0cc347a
parentcf3bc251974e88c4e6ffc3efc778fd1f0af4931e (diff)
downloadceph-e9bf06d9916cc97dc1ee93abe3e94de308905592.tar.gz
FileStore: handle observers in constructor/destructorwip_observer
Signed-off-by: Samuel Just <sam.just@inktank.com>
-rw-r--r--src/os/FileStore.cc13
1 files changed, 6 insertions, 7 deletions
diff --git a/src/os/FileStore.cc b/src/os/FileStore.cc
index 986ed77e6d6..6ddb58ba139 100644
--- a/src/os/FileStore.cc
+++ b/src/os/FileStore.cc
@@ -469,10 +469,16 @@ FileStore::FileStore(const std::string &base, const std::string &jdev, const cha
plb.add_u64_counter(l_os_j_full, "journal_full");
logger = plb.create_perf_counters();
+
+ g_ceph_context->get_perfcounters_collection()->add(logger);
+ g_ceph_context->_conf->add_observer(this);
}
FileStore::~FileStore()
{
+ g_ceph_context->_conf->remove_observer(this);
+ g_ceph_context->get_perfcounters_collection()->remove(logger);
+
if (journal)
journal->logger = NULL;
delete logger;
@@ -1797,10 +1803,6 @@ int FileStore::mount()
timer.init();
- g_ceph_context->get_perfcounters_collection()->add(logger);
-
- g_ceph_context->_conf->add_observer(this);
-
// all okay.
return 0;
@@ -1822,7 +1824,6 @@ int FileStore::umount()
{
dout(5) << "umount " << basedir << dendl;
- g_ceph_context->_conf->remove_observer(this);
start_sync();
@@ -1835,8 +1836,6 @@ int FileStore::umount()
journal_stop();
- g_ceph_context->get_perfcounters_collection()->remove(logger);
-
op_finisher.stop();
ondisk_finisher.stop();