summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSage Weil <sage@inktank.com>2013-01-19 18:28:35 -0800
committerSage Weil <sage@inktank.com>2013-01-22 14:47:38 -0800
commit9230c863b3dc2bdda12c23202682a84c48f070a1 (patch)
tree2d63b3bb6f11a46f2fb3e222200cf30551aaf9db
parent3399860de2724281ee024b52f461b60f769ee0ee (diff)
downloadceph-9230c863b3dc2bdda12c23202682a84c48f070a1.tar.gz
osd: make OSD a config observer
Signed-off-by: Sage Weil <sage@inktank.com>
-rw-r--r--src/osd/OSD.cc19
-rw-r--r--src/osd/OSD.h9
2 files changed, 27 insertions, 1 deletions
diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc
index 4549eb76671..4ffab8f1fab 100644
--- a/src/osd/OSD.cc
+++ b/src/osd/OSD.cc
@@ -841,6 +841,8 @@ int OSD::pre_init()
<< "currently in use. (Is ceph-osd already running?)" << dendl;
return -EBUSY;
}
+
+ g_conf->add_observer(this);
return 0;
}
@@ -1090,6 +1092,8 @@ void OSD::suicide(int exitcode)
int OSD::shutdown()
{
+ g_conf->remove_observer(this);
+
service.shutdown();
g_ceph_context->_conf->set_val("debug_osd", "100");
g_ceph_context->_conf->set_val("debug_journal", "100");
@@ -6212,6 +6216,21 @@ void OSD::process_peering_events(const list<PG*> &pgs)
// --------------------------------
+const char** OSD::get_tracked_conf_keys() const
+{
+ static const char* KEYS[] = {
+ NULL
+ };
+ return KEYS;
+}
+
+void OSD::handle_conf_change(const struct md_config_t *conf,
+ const std::set <std::string> &changed)
+{
+}
+
+// --------------------------------
+
int OSD::init_op_flags(OpRequestRef op)
{
MOSDOp *m = (MOSDOp*)op->request;
diff --git a/src/osd/OSD.h b/src/osd/OSD.h
index 83308486f0f..3d5e51523ea 100644
--- a/src/osd/OSD.h
+++ b/src/osd/OSD.h
@@ -394,8 +394,15 @@ public:
OSDService(OSD *osd);
};
-class OSD : public Dispatcher {
+class OSD : public Dispatcher,
+ public md_config_obs_t {
/** OSD **/
+public:
+ // config observer bits
+ virtual const char** get_tracked_conf_keys() const;
+ virtual void handle_conf_change(const struct md_config_t *conf,
+ const std::set <std::string> &changed);
+
protected:
Mutex osd_lock; // global lock
SafeTimer timer; // safe timer (osd_lock)