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;
Mutex::Locker lock(osd_lock);
timer.init();
- service.watch_timer.init();
- service.watch = new Watch();
// mount.
dout(2) << "mounting " << dev_path << " "
if (r < 0)
return r;
}
- service.publish_superblock(superblock);
class_handler = new ClassHandler();
cls_initialize(class_handler);
return -EINVAL;
}
osdmap = get_map(superblock.current_epoch);
- service.publish_map(osdmap);
-
check_osdmap_features();
bind_epoch = osdmap->get_epoch();
"show slowest recent ops");
assert(r == 0);
+ service.init();
+ service.publish_map(osdmap);
+ service.publish_superblock(superblock);
return 0;
}
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");
timer.shutdown();
- service.watch_lock.Lock();
- service.watch_timer.shutdown();
- service.watch_lock.Unlock();
-
heartbeat_lock.Lock();
heartbeat_stop = true;
heartbeat_cond.Signal();
monc->shutdown();
- delete service.watch;
-
osd_lock.Unlock();
return r;
}