]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
OSD: add init and shutdown for OSDService
authorSamuel Just <sam.just@inktank.com>
Mon, 24 Sep 2012 18:37:07 +0000 (11:37 -0700)
committerSamuel Just <sam.just@inktank.com>
Mon, 24 Sep 2012 19:29:55 +0000 (12:29 -0700)
Signed-off-by: Samuel Just <sam.just@inktank.com>
src/osd/OSD.cc
src/osd/OSD.h

index 5add67505589267ec5056900abf4c9eedc9d05fc..c6adf0d0b493cf5d0be41c5de4c08c512014674e 100644 (file)
@@ -185,6 +185,21 @@ void OSDService::pg_stat_queue_dequeue(PG *pg)
   osd->pg_stat_queue_dequeue(pg);
 }
 
+void OSDService::shutdown()
+{
+  watch_lock.Lock();
+  watch_timer.shutdown();
+  watch_lock.Unlock();
+
+  delete watch;
+}
+
+void OSDService::init()
+{
+  watch_timer.init();
+  watch = new Watch();
+}
+
 ObjectStore *OSD::create_object_store(const std::string &dev, const std::string &jdev)
 {
   struct stat st;
@@ -798,8 +813,6 @@ int OSD::init()
   Mutex::Locker lock(osd_lock);
 
   timer.init();
-  service.watch_timer.init();
-  service.watch = new Watch();
 
   // mount.
   dout(2) << "mounting " << dev_path << " "
@@ -833,7 +846,6 @@ int OSD::init()
     if (r < 0)
       return r;
   }
-  service.publish_superblock(superblock);
 
   class_handler = new ClassHandler();
   cls_initialize(class_handler);
@@ -845,8 +857,6 @@ int OSD::init()
     return -EINVAL;
   }
   osdmap = get_map(superblock.current_epoch);
-  service.publish_map(osdmap);
-
   check_osdmap_features();
 
   bind_epoch = osdmap->get_epoch();
@@ -922,6 +932,9 @@ int OSD::init()
                                          "show slowest recent ops");
   assert(r == 0);
 
+  service.init();
+  service.publish_map(osdmap);
+  service.publish_superblock(superblock);
   return 0;
 }
 
@@ -1016,6 +1029,7 @@ void OSD::suicide(int exitcode)
 
 int OSD::shutdown()
 {
+  service.shutdown();
   g_ceph_context->_conf->set_val("debug_osd", "100");
   g_ceph_context->_conf->set_val("debug_journal", "100");
   g_ceph_context->_conf->set_val("debug_filestore", "100");
@@ -1028,10 +1042,6 @@ int OSD::shutdown()
 
   timer.shutdown();
 
-  service.watch_lock.Lock();
-  service.watch_timer.shutdown();
-  service.watch_lock.Unlock();
-
   heartbeat_lock.Lock();
   heartbeat_stop = true;
   heartbeat_cond.Signal();
@@ -1133,8 +1143,6 @@ int OSD::shutdown()
 
   monc->shutdown();
 
-  delete service.watch;
-
   osd_lock.Unlock();
   return r;
 }
index 9cf4c43df70ae4e694bc88ffeacb0236c2ca1d36..25daf495f8114193ee5e0a2609cda62a5fa096fe 100644 (file)
@@ -315,6 +315,9 @@ public:
   void pg_stat_queue_enqueue(PG *pg);
   void pg_stat_queue_dequeue(PG *pg);
 
+  void init();
+  void shutdown();
+
   OSDService(OSD *osd);
 };
 class OSD : public Dispatcher {