]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
g_conf: change to pointer
authorColin Patrick McCabe <cmccabe@alumni.cmu.edu>
Tue, 7 Jun 2011 17:38:54 +0000 (10:38 -0700)
committerColin Patrick McCabe <cmccabe@alumni.cmu.edu>
Tue, 7 Jun 2011 17:38:54 +0000 (10:38 -0700)
Signed-off-by: Colin McCabe <colin.mccabe@dreamhost.com>
81 files changed:
src/auth/AuthSupported.cc
src/auth/KeyRing.h
src/auth/cephx/CephxKeyServer.cc
src/auth/cephx/CephxProtocol.cc
src/auth/cephx/CephxServiceHandler.cc
src/auth/none/AuthNoneProtocol.h
src/cauthtool.cc
src/cconf.cc
src/cfuse.cc
src/client/Client.cc
src/client/SyntheticClient.cc
src/cmds.cc
src/cmon.cc
src/common/Clock.cc
src/common/DoutStreambuf.cc
src/common/LogClient.cc
src/common/Mutex.cc
src/common/ProfLogger.cc
src/common/ceph_context.cc
src/common/ceph_context.h
src/common/common_init.cc
src/common/config.cc
src/common/debug.h
src/cosd.cc
src/csyn.cc
src/librados.cc
src/mds/CDir.cc
src/mds/CDir.h
src/mds/CInode.cc
src/mds/CInode.h
src/mds/Dumper.cc
src/mds/Locker.cc
src/mds/MDBalancer.cc
src/mds/MDCache.cc
src/mds/MDLog.cc
src/mds/MDS.cc
src/mds/MDSMap.h
src/mds/MDSTableClient.cc
src/mds/MDSTableServer.cc
src/mds/Migrator.cc
src/mds/Server.cc
src/mds/journal.cc
src/mds/mdstypes.h
src/mon/AuthMonitor.cc
src/mon/Elector.cc
src/mon/MDSMonitor.cc
src/mon/MonClient.cc
src/mon/Monitor.cc
src/mon/MonitorStore.cc
src/mon/OSDMonitor.cc
src/mon/PGMap.h
src/mon/PGMonitor.cc
src/mon/Paxos.cc
src/mon/PaxosService.cc
src/msg/Message.cc
src/msg/SimpleMessenger.cc
src/msg/SimpleMessenger.h
src/msg/tcp.cc
src/os/FileJournal.cc
src/os/FileStore.cc
src/os/JournalingObjectStore.cc
src/osd/ClassHandler.cc
src/osd/OSD.cc
src/osd/OSD.h
src/osd/OSDMap.cc
src/osd/OSDMap.h
src/osd/PG.cc
src/osd/ReplicatedPG.cc
src/osdc/Journaler.cc
src/osdc/ObjectCacher.cc
src/osdc/Objecter.cc
src/osdc/Objecter.h
src/osdmaptool.cc
src/perfglue/heap_profiler.cc
src/rgw/librgw.cc
src/rgw/rgw_common.h
src/rgw/rgw_op.cc
src/rgw/rgw_rados.cc
src/test/TestDoutStreambuf.cc
src/testmsgr.cc
src/tools/common.cc

index 9252b5e5aa9b5ae6788ba2a6360f7c14c34e6da0..0a43a4a2ce8a4b9c3305e97a99c95d39dfe1c2e2 100644 (file)
@@ -25,7 +25,7 @@ static map<int, bool> auth_supported;
 
 static void _init_supported(void)
 {
-  string str = g_conf.auth_supported;
+  string str = g_conf->auth_supported;
   list<string> sup_list;
   get_str_list(str, sup_list);
   for (list<string>::iterator iter = sup_list.begin(); iter != sup_list.end(); ++iter) {
index a3e26e2b6c1d2c26d89eea71aa6fedbbc69e56ba..b02a9c664d5913ee80c784d6307ce9f3e5a2b1f8 100644 (file)
@@ -54,7 +54,7 @@ public:
     return true;
   }
   void get_master(CryptoKey& dest) const {
-    get_secret(g_conf.name, dest);
+    get_secret(g_conf->name, dest);
   }
 
   // modifiers
index 49c4fd27a3430d2425f7639ccc9e8d63ca085889..666094d08a018f26e452aadfbd08ca0495a6183b 100644 (file)
@@ -156,7 +156,7 @@ bool KeyServer::_check_rotating_secrets()
   if (added) {
     data.rotating_ver++;
     //data.next_rotating_time = g_clock.now();
-    //data.next_rotating_time += MIN(g_conf.auth_mon_ticket_ttl, g_conf.auth_service_ticket_ttl);
+    //data.next_rotating_time += MIN(g_conf->auth_mon_ticket_ttl, g_conf->auth_service_ticket_ttl);
     _dump_rotating_secrets();
     return true;
   }
@@ -185,7 +185,7 @@ int KeyServer::_rotate_secret(uint32_t service_id)
   RotatingSecrets& r = data.rotating_secrets[service_id];
   int added = 0;
   utime_t now = g_clock.now();
-  double ttl = service_id == CEPH_ENTITY_TYPE_AUTH ? g_conf.auth_mon_ticket_ttl : g_conf.auth_service_ticket_ttl;
+  double ttl = service_id == CEPH_ENTITY_TYPE_AUTH ? g_conf->auth_mon_ticket_ttl : g_conf->auth_service_ticket_ttl;
 
   while (r.need_new_secrets(now)) {
     ExpiringCryptoKey ek;
@@ -380,7 +380,7 @@ int KeyServer::_build_session_auth_info(uint32_t service_id, CephXServiceTicketI
 {
   info.service_id = service_id;
   info.ticket = auth_ticket_info.ticket;
-  info.ticket.init_timestamps(g_clock.now(), g_conf.auth_service_ticket_ttl);
+  info.ticket.init_timestamps(g_clock.now(), g_conf->auth_service_ticket_ttl);
 
   generate_secret(info.session_key);
 
index 9b025b0e44472a3c7e73b7ee8b7b0b67b669de06..babd6f52e46294f7bc887ce4d0dd4be58a44d53c 100644 (file)
@@ -338,7 +338,7 @@ bool cephx_decode_ticket(KeyStore *keys, uint32_t service_id, CephXTicketBlob& t
   }
 
   if (secret_id == (uint64_t)-1) {
-    if (!keys->get_secret(g_conf.name, service_secret)) {
+    if (!keys->get_secret(g_conf->name, service_secret)) {
       dout(0) << "ceph_decode_ticket could not get general service secret for service_id="
              << ceph_entity_type_name(service_id) << " secret_id=" << secret_id << dendl;
       return false;
index 3d6a9fdf006b906a126548746633570c46df8466..0add26643285105aa62686a775e8c4f27ff89712 100644 (file)
@@ -101,11 +101,11 @@ int CephxServiceHandler::handle_request(bufferlist::iterator& indata, bufferlist
         should_enc_ticket = true;
       }
 
-      info.ticket.init_timestamps(g_clock.now(), g_conf.auth_mon_ticket_ttl);
+      info.ticket.init_timestamps(g_clock.now(), g_conf->auth_mon_ticket_ttl);
       info.ticket.name = entity_name;
       info.ticket.global_id = global_id;
       info.ticket.auid = eauth.auid;
-      info.validity += g_conf.auth_mon_ticket_ttl;
+      info.validity += g_conf->auth_mon_ticket_ttl;
 
       if (auid) *auid = eauth.auid;
 
@@ -160,7 +160,7 @@ int CephxServiceHandler::handle_request(bufferlist::iterator& indata, bufferlist
             ret = r;
             break;
           }
-          info.validity += g_conf.auth_service_ticket_ttl;
+          info.validity += g_conf->auth_service_ticket_ttl;
           info_vec.push_back(info);
         }
       }
index 92acb9f14c9eb91d83b463f951c9b8008f680c02..5209fded13169f04e24d2aaad82d13cfdd8330f2 100644 (file)
@@ -22,7 +22,7 @@ struct AuthNoneAuthorizer : public AuthAuthorizer {
   bool build_authorizer(uint64_t global_id) {
     __u8 struct_v = 1;
     ::encode(struct_v, bl);
-    ::encode(g_conf.name, bl);
+    ::encode(g_conf->name, bl);
     ::encode(global_id, bl);
     return 0;
   }
index bfa75dcf4557af28fa5bf173981c980bedef707c..bb3dcd562272407ad4e95d51b8623186b2716160 100644 (file)
@@ -56,7 +56,7 @@ int main(int argc, const char **argv)
   common_init(args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY,
              CINIT_FLAG_NO_DEFAULT_CONFIG_FILE);
   common_init_finish(&g_ceph_context);
-  EntityName ename(g_conf.name);
+  EntityName ename(g_conf->name);
 
   const char *me = argv[0];
 
index 806ffcce44aff27394debd981dadf26dfdcf87af..ccf72c7fc33b1ea2718b2ff9ed33286a53ee6bf5 100644 (file)
@@ -69,7 +69,7 @@ Return code will be 0 on success; error code otherwise.\n\
 static int list_sections(const std::string &prefix)
 {
   std::vector <std::string> sections;
-  int ret = g_conf.get_all_sections(sections);
+  int ret = g_conf->get_all_sections(sections);
   if (ret)
     return 2;
   for (std::vector<std::string>::const_iterator p = sections.begin();
@@ -88,9 +88,9 @@ static int lookup(const std::deque<std::string> &sections,
   for (deque<string>::const_iterator s = sections.begin(); s != sections.end(); ++s) {
     my_sections.push_back(*s);
   }
-  g_conf.get_my_sections(my_sections);
+  g_conf->get_my_sections(my_sections);
   std::string val;
-  int ret = g_conf.get_val_from_conf_file(my_sections, key.c_str(), val, true);
+  int ret = g_conf->get_val_from_conf_file(my_sections, key.c_str(), val, true);
   if (ret == -ENOENT)
     return 1;
   else if (ret == 0) {
index 7fbbf6e8cedf7fe9e1bb6704a22bd71b1d2c1876..d570e6fb7bdc5d13581caa9cf01385aa0cab68ae 100644 (file)
@@ -70,7 +70,7 @@ int main(int argc, const char **argv, const char *envp[]) {
   vec_to_argv(nargs, argc, argv);
 
   // FUSE will chdir("/"); be ready.
-  g_conf.chdir = "/";
+  g_conf->chdir = "/";
 
   // check for 32-bit arch
   if (sizeof(long) == 4) {
@@ -100,7 +100,7 @@ int main(int argc, const char **argv, const char *envp[]) {
   // we need to handle the forking ourselves.
   int fd[2] = {0, 0};  // parent's, child's
   pid_t childpid = 0;
-  if (g_conf.daemonize) {
+  if (g_conf->daemonize) {
     int r = socketpair(AF_UNIX, SOCK_STREAM, 0, fd);
     if (r < 0) {
       cerr << "cfuse[" << getpid() << "]: unable to create socketpair: " << strerror(errno) << std::endl;
@@ -124,7 +124,7 @@ int main(int argc, const char **argv, const char *envp[]) {
     
     // start up fuse
     // use my argc, argv (make sure you pass a mount point!)
-    int r = client->mount(g_conf.client_mountpoint.c_str());
+    int r = client->mount(g_conf->client_mountpoint.c_str());
     if (r < 0) {
       cerr << "cfuse[" << getpid() << "]: ceph mount failed with " << strerror(-r) << std::endl;
       goto out_shutdown;
@@ -144,7 +144,7 @@ int main(int argc, const char **argv, const char *envp[]) {
     // wait for messenger to finish
     messenger->wait();
 
-    if (g_conf.daemonize) {
+    if (g_conf->daemonize) {
       //cout << "child signalling parent with " << r << std::endl;
       ::write(fd[1], &r, sizeof(r));
     }
index 1207460e7deffeda494fb90b1d363efb7bf87c63..fa8e8972617f18b6aee16c4206a53ba28e04137c 100644 (file)
@@ -65,7 +65,7 @@ using namespace std;
 #undef dout_prefix
 #define dout_prefix *_dout << "client" << whoami << " "
 
-#define  tout       if (!g_conf.client_trace.empty()) traceout
+#define  tout       if (!g_conf->client_trace.empty()) traceout
 
 
 // static logger
@@ -144,8 +144,8 @@ Client::Client(Messenger *m, MonClient *mc)
 
   num_flushing_caps = 0;
 
-  lru.lru_set_max(g_conf.client_cache_size);
-  lru.lru_set_midpoint(g_conf.client_cache_mid);
+  lru.lru_set_max(g_conf->client_cache_size);
+  lru.lru_set_midpoint(g_conf->client_cache_mid);
 
   // file handles
   free_fd_set.insert(10, 1<<30);
@@ -387,7 +387,7 @@ void Client::update_inode_file_bits(Inode *in,
               << truncate_size << dendl;
       in->truncate_size = truncate_size;
       in->oset.truncate_size = truncate_size;
-      if (g_conf.client_oc && prior_size > truncate_size) { //do actual in-memory truncation
+      if (g_conf->client_oc && prior_size > truncate_size) { //do actual in-memory truncation
        vector<ObjectExtent> ls;
        filer->file_to_extents(in->ino, &in->layout,
                               truncate_size, prior_size - truncate_size,
@@ -849,7 +849,7 @@ int Client::choose_target_mds(MetaRequest *req)
     goto out;
   }
 
-  if (g_conf.client_use_random_mds)
+  if (g_conf->client_use_random_mds)
     goto random_mds;
 
   if (req->inode) {
@@ -2982,7 +2982,7 @@ int Client::mount(const std::string &mount_root)
   }
 
   client_lock.Unlock();
-  int r = monclient->authenticate(g_conf.client_mount_timeout);
+  int r = monclient->authenticate(g_conf->client_mount_timeout);
   client_lock.Lock();
   if (r < 0)
     return r;
@@ -3018,12 +3018,12 @@ int Client::mount(const std::string &mount_root)
   _ll_get(root);
 
   // trace?
-  if (!g_conf.client_trace.empty()) {
-    traceout.open(g_conf.client_trace.c_str());
+  if (!g_conf->client_trace.empty()) {
+    traceout.open(g_conf->client_trace.c_str());
     if (traceout.is_open()) {
-      dout(1) << "opened trace file '" << g_conf.client_trace << "'" << dendl;
+      dout(1) << "opened trace file '" << g_conf->client_trace << "'" << dendl;
     } else {
-      dout(1) << "FAILED to open trace file '" << g_conf.client_trace << "'" << dendl;
+      dout(1) << "FAILED to open trace file '" << g_conf->client_trace << "'" << dendl;
     }
   }
 
@@ -3084,7 +3084,7 @@ void Client::unmount()
   lru.lru_set_max(0);
   trim_cache();
 
-  if (g_conf.client_oc) {
+  if (g_conf->client_oc) {
     // flush/release all buffered data
     hash_map<vinodeno_t, Inode*>::iterator next;
     for (hash_map<vinodeno_t, Inode*>::iterator p = inode_map.begin();
@@ -3124,7 +3124,7 @@ void Client::unmount()
   //}
 
   // unsafe writes
-  if (!g_conf.client_oc) {
+  if (!g_conf->client_oc) {
     while (unsafe_sync_write > 0) {
       dout(0) << unsafe_sync_write << " unsafe_sync_writes, waiting" 
               << dendl;
@@ -3133,8 +3133,8 @@ void Client::unmount()
   }
 
   // stop tracing
-  if (!g_conf.client_trace.empty()) {
-    dout(1) << "closing trace file '" << g_conf.client_trace << "'" << dendl;
+  if (!g_conf->client_trace.empty()) {
+    dout(1) << "closing trace file '" << g_conf->client_trace << "'" << dendl;
     traceout.close();
   }
 
@@ -3180,7 +3180,7 @@ void Client::tick()
 {
   dout(21) << "tick" << dendl;
   tick_event = new C_C_Tick(this);
-  timer.add_event_after(g_conf.client_tick_interval, tick_event);
+  timer.add_event_after(g_conf->client_tick_interval, tick_event);
 
   utime_t now = g_clock.now();
 
@@ -3287,7 +3287,7 @@ int Client::_lookup(Inode *dir, const string& dname, Inode **target)
     goto done;
   }
   
-  if (dname == g_conf.client_snapdir &&
+  if (dname == g_conf->client_snapdir &&
       dir->snapid == CEPH_NOSNAP) {
     *target = open_snapdir(dir);
     goto done;
@@ -4834,22 +4834,22 @@ int Client::_read_async(Fh *f, uint64_t off, uint64_t len, bufferlist *bl)
     in->get_cap_ref(CEPH_CAP_FILE_CACHE);
   
   dout(10) << "readahead=" << readahead << " nr_consec=" << f->nr_consec_read
-          << " max_byes=" << g_conf.client_readahead_max_bytes
-          << " max_periods=" << g_conf.client_readahead_max_periods << dendl;
+          << " max_byes=" << g_conf->client_readahead_max_bytes
+          << " max_periods=" << g_conf->client_readahead_max_periods << dendl;
 
   // readahead?
   if (readahead &&
       f->nr_consec_read &&
-      (g_conf.client_readahead_max_bytes ||
-       g_conf.client_readahead_max_periods)) {
+      (g_conf->client_readahead_max_bytes ||
+       g_conf->client_readahead_max_periods)) {
     loff_t l = f->consec_read_bytes * 2;
-    if (g_conf.client_readahead_min)
-      l = MAX(l, g_conf.client_readahead_min);
-    if (g_conf.client_readahead_max_bytes)
-      l = MIN(l, g_conf.client_readahead_max_bytes);
+    if (g_conf->client_readahead_min)
+      l = MAX(l, g_conf->client_readahead_min);
+    if (g_conf->client_readahead_max_bytes)
+      l = MIN(l, g_conf->client_readahead_max_bytes);
     loff_t p = in->layout.fl_stripe_count * in->layout.fl_object_size;
-    if (g_conf.client_readahead_max_periods)
-      l = MIN(l, g_conf.client_readahead_max_periods * p);
+    if (g_conf->client_readahead_max_periods)
+      l = MIN(l, g_conf->client_readahead_max_periods * p);
 
     if (l >= 2*p)
       // align large readahead with period
@@ -5059,7 +5059,7 @@ int Client::_write(Fh *f, int64_t offset, uint64_t size, const char *buf)
 
   dout(10) << " snaprealm " << *in->snaprealm << dendl;
 
-  if (g_conf.client_oc && (got & CEPH_CAP_FILE_BUFFER)) {
+  if (g_conf->client_oc && (got & CEPH_CAP_FILE_BUFFER)) {
     // do buffered write
     if (!in->oset.dirty_tx && in->oset.uncommitted.empty())
       get_cap_ref(in, CEPH_CAP_FILE_BUFFER);
@@ -5183,7 +5183,7 @@ int Client::_fsync(Fh *f, bool syncdataonly)
 
   dout(3) << "_fsync(" << f << ", " << (syncdataonly ? "dataonly)":"data+metadata)") << dendl;
   
-  if (g_conf.client_oc)
+  if (g_conf->client_oc)
     _flush(in);
   
   if (!syncdataonly && (in->dirty_caps & ~CEPH_CAP_ANY_FILE_WR)) {
index d321d7cdbc2f04eaa7c1b7e44c3a3e37209ff1a8..98e2fc7b47be16a3510bd104413f00ce8b29f150 100644 (file)
@@ -2166,7 +2166,7 @@ public:
 int SyntheticClient::create_objects(int nobj, int osize, int inflight)
 {
   // divy up
-  int numc = g_conf.num_client ? g_conf.num_client : 1;
+  int numc = g_conf->num_client ? g_conf->num_client : 1;
 
   int start, inc, end;
 
@@ -3267,7 +3267,7 @@ void SyntheticClient::import_find(const char *base, const char *find, bool data)
     if (sp < 0) dirnum++;
 
     //dout(0) << "leading dir " << filename << " " << dirnum << dendl;
-    if (dirnum % g_conf.num_client != client->get_nodeid()) {
+    if (dirnum % g_conf->num_client != client->get_nodeid()) {
       dout(20) << "skipping leading dir " << dirnum << " " << filename << dendl;
       continue;
     }
index 664b2b61a0aa5dcee536048fb14050a46916b4a9..0b77d466cb573e1a4d7ad17353d232bd5394734b 100644 (file)
@@ -168,7 +168,7 @@ int main(int argc, const char **argv)
       }
       dout(0) << "requesting oneshot_replay for mds" << r << dendl;
       shadow = MDSMap::STATE_ONESHOT_REPLAY;
-      g_conf.mds_standby_for_rank = r;
+      g_conf->mds_standby_for_rank = r;
     }
     else if (ceph_argparse_witharg(args, i, &val, "--hot-standby", (char*)NULL)) {
       int r = parse_rank("hot-standby", val);
@@ -178,7 +178,7 @@ int main(int argc, const char **argv)
       }
       dout(0) << "requesting standby_replay for mds" << r << dendl;
       shadow = MDSMap::STATE_STANDBY_REPLAY;
-      g_conf.mds_standby_for_rank = r;
+      g_conf->mds_standby_for_rank = r;
     }
     else {
       derr << "Error: can't understand argument: " << *i << "\n" << dendl;
@@ -192,14 +192,14 @@ int main(int argc, const char **argv)
   }
 
   // Normal startup
-  if (g_conf.name.has_default_id()) {
+  if (g_conf->name.has_default_id()) {
     derr << "must specify '-i name' with the cmds instance name" << dendl;
     usage();
   }
 
   SimpleMessenger *messenger = new SimpleMessenger();
   messenger->bind(getpid());
-  cout << "starting " << g_conf.name << " at " << messenger->get_ms_addr()
+  cout << "starting " << g_conf->name << " at " << messenger->get_ms_addr()
        << std::endl;
   messenger->register_entity(entity_name_t::MDS(-1));
   uint64_t supported =
@@ -229,7 +229,7 @@ int main(int argc, const char **argv)
   messenger->start();
 
   // start mds
-  MDS *mds = new MDS(g_conf.name.get_id().c_str(), messenger, &mc);
+  MDS *mds = new MDS(g_conf->name.get_id().c_str(), messenger, &mc);
 
   // in case we have to respawn...
   mds->orig_argc = argc;
index 86f7c5532e4eaca8c542158ec55e4c7e946ee122..0326e6c094fdbf8a63782d8e7361568289a6f4e0 100644 (file)
@@ -75,7 +75,7 @@ int main(int argc, const char **argv)
       usage();
   }
 
-  if (g_conf.mon_data.empty()) {
+  if (g_conf->mon_data.empty()) {
     cerr << "must specify '--mon-data=foo' data path" << std::endl;
     usage();
   }
@@ -83,21 +83,21 @@ int main(int argc, const char **argv)
   // -- mkfs --
   if (mkfs) {
     common_init_finish(&g_ceph_context);
-    if (g_conf.monmap.empty() || !osdmapfn)
+    if (g_conf->monmap.empty() || !osdmapfn)
       usage();
 
     // make sure it doesn't already exist
         /*
     struct stat st;
-    if (::lstat(g_conf.mon_data.c_str(), &st) == 0) {
-      cerr << "monfs dir " << g_conf.mon_data << " already exists; remove it first" << std::endl;
+    if (::lstat(g_conf->mon_data.c_str(), &st) == 0) {
+      cerr << "monfs dir " << g_conf->mon_data << " already exists; remove it first" << std::endl;
       usage();
     }
        */
 
     // load monmap
     bufferlist monmapbl, osdmapbl;
-    int err = monmapbl.read_file(g_conf.monmap.c_str());
+    int err = monmapbl.read_file(g_conf->monmap.c_str());
     if (err < 0)
       exit(1);
     MonMap monmap;
@@ -108,11 +108,11 @@ int main(int argc, const char **argv)
       exit(1);
 
     // go
-    MonitorStore store(g_conf.mon_data);
-    Monitor mon(g_conf.name.get_id(), &store, 0, &monmap);
+    MonitorStore store(g_conf->mon_data);
+    Monitor mon(g_conf->name.get_id(), &store, 0, &monmap);
     mon.mkfs(osdmapbl);
-    cout << argv[0] << ": created monfs at " << g_conf.mon_data 
-        << " for " << g_conf.name << std::endl;
+    cout << argv[0] << ": created monfs at " << g_conf->mon_data 
+        << " for " << g_conf->name << std::endl;
     return 0;
   }
 
@@ -121,11 +121,11 @@ int main(int argc, const char **argv)
                         ceph_mon_feature_incompat);
   CompatSet ondisk_features;
 
-  MonitorStore store(g_conf.mon_data);
+  MonitorStore store(g_conf->mon_data);
   err = store.mount();
   if (err < 0) {
     char buf[80];
-    cerr << "problem opening monitor store in " << g_conf.mon_data << ": " << strerror_r(-err, buf, sizeof(buf)) << std::endl;
+    cerr << "problem opening monitor store in " << g_conf->mon_data << ": " << strerror_r(-err, buf, sizeof(buf)) << std::endl;
     exit(1);
   }
 
@@ -221,17 +221,17 @@ int main(int argc, const char **argv)
     assert(v == monmap.get_epoch());
   }
 
-  if (!monmap.contains(g_conf.name.get_id())) {
-    cerr << g_conf.name << " does not exist in monmap" << std::endl;
+  if (!monmap.contains(g_conf->name.get_id())) {
+    cerr << g_conf->name << " does not exist in monmap" << std::endl;
     exit(1);
   }
 
-  entity_addr_t ipaddr = monmap.get_addr(g_conf.name.get_id());
+  entity_addr_t ipaddr = monmap.get_addr(g_conf->name.get_id());
   entity_addr_t conf_addr;
   std::vector <std::string> my_sections;
-  g_conf.get_my_sections(my_sections);
+  g_conf->get_my_sections(my_sections);
   std::string mon_addr_str;
-  if (g_conf.get_val_from_conf_file(my_sections, "mon addr",
+  if (g_conf->get_val_from_conf_file(my_sections, "mon addr",
                                    mon_addr_str, true) == 0)
   {
     if (conf_addr.parse(mon_addr_str.c_str()) && (ipaddr != conf_addr)) {
@@ -243,21 +243,21 @@ int main(int argc, const char **argv)
 
   // bind
   SimpleMessenger *messenger = new SimpleMessenger();
-  int rank = monmap.get_rank(g_conf.name.get_id());
+  int rank = monmap.get_rank(g_conf->name.get_id());
 
-  cout << "starting " << g_conf.name << " rank " << rank
-       << " at " << monmap.get_addr(g_conf.name.get_id())
-       << " mon_data " << g_conf.mon_data
+  cout << "starting " << g_conf->name << " rank " << rank
+       << " at " << monmap.get_addr(g_conf->name.get_id())
+       << " mon_data " << g_conf->mon_data
        << " fsid " << monmap.get_fsid()
        << std::endl;
-  err = messenger->bind(monmap.get_addr(g_conf.name.get_id()), 0);
+  err = messenger->bind(monmap.get_addr(g_conf->name.get_id()), 0);
   if (err < 0)
     return 1;
 
   // start monitor
   messenger->register_entity(entity_name_t::MON(rank));
   messenger->set_default_send_priority(CEPH_MSG_PRIO_HIGH);
-  Monitor *mon = new Monitor(g_conf.name.get_id(), &store, messenger, &monmap);
+  Monitor *mon = new Monitor(g_conf->name.get_id(), &store, messenger, &monmap);
 
   common_init_daemonize(&g_ceph_context, 0);
   common_init_finish(&g_ceph_context);
index 2446854b9def64fde7dfc54c30f28ba1934be654..88a44a43dd1da9dcef74615f8fb240f6d96fd59b 100644 (file)
@@ -29,7 +29,7 @@ utime_t Clock::now() {
   struct timeval tv;
   gettimeofday(&tv, NULL);
   utime_t n(&tv);
-  n += g_conf.clock_offset;
+  n += g_conf->clock_offset;
   if (n < last) {
     //derr << "WARNING: clock jumped backwards from " << last << " to " << n << dendl;
     n = last;    // clock jumped backwards!
index b5612476bd2d7b9b87cc602dcb4b9106868d0b18..5cbe0cb44decc0fb35c17cce6664d2b7e4cac396 100644 (file)
@@ -298,7 +298,7 @@ handle_conf_change(const md_config_t *conf, const std::set <std::string> &change
     if ((changed.count("log_to_syslog") || changed.count("name")) &&
         (g_code_env == CODE_ENVIRONMENT_DAEMON)) {
       closelog();
-      openlog(g_conf.name.to_cstr(), LOG_ODELAY | LOG_PID, LOG_USER);
+      openlog(g_conf->name.to_cstr(), LOG_ODELAY | LOG_PID, LOG_USER);
     }
     flags |= DOUTSB_FLAG_SYSLOG;
   }
index 78b8b47f9ea961fa993cb86ba5bcc430830de9d4..b1683b0f84cf398d9eeeac06089c0837380c60d3 100644 (file)
@@ -99,7 +99,7 @@ void LogClient::do_log(clog_type type, const std::string& s)
   e.msg = s;
 
   // log to syslog?
-  if (g_conf.clog_to_syslog) {
+  if (g_conf->clog_to_syslog) {
     ostringstream oss;
     oss << e;
     string str(oss.str());
@@ -107,7 +107,7 @@ void LogClient::do_log(clog_type type, const std::string& s)
   }
 
   // log to monitor?
-  if (g_conf.clog_to_monitors) {
+  if (g_conf->clog_to_monitors) {
     log_queue.push_back(e);
 
     // if we are a monitor, queue for ourselves, synchronously
index 24ddffb1ec701a543a6b11ceafe988acb09e3789..b7ac971881385c04c4d3566a10e73e2b5abd3cf5 100644 (file)
@@ -14,8 +14,8 @@
 
 #undef dout
 #undef derr
-#define  dout(l)    if (l<=g_conf.debug_lockdep) *_dout << g_clock.now() << " " << std::hex << pthread_self() << std::dec << " lockdep: "
-#define  derr(l)    if (l<=g_conf.debug_lockdep) *_derr << g_clock.now() << " " << std::hex << pthread_self() << std::dec << " lockdep: "
+#define  dout(l)    if (l<=g_conf->debug_lockdep) *_dout << g_clock.now() << " " << std::hex << pthread_self() << std::dec << " lockdep: "
+#define  derr(l)    if (l<=g_conf->debug_lockdep) *_derr << g_clock.now() << " " << std::hex << pthread_self() << std::dec << " lockdep: "
 
 
 pthread_mutex_t lockdep_mutex = PTHREAD_MUTEX_INITIALIZER;
index 73df898d2defda9e3d259c89cf94871a73b93eca..30e8fc71d798388114266da34dbcf66a9a991eba 100644 (file)
@@ -148,7 +148,7 @@ static void flush_all_loggers()
 {
   generic_dout(20) << "flush_all_loggers" << dendl;
 
-  if (!g_conf.profiling_logger)
+  if (!g_conf->profiling_logger)
     return;
 
   utime_t now = g_clock.now();
@@ -163,7 +163,7 @@ static void flush_all_loggers()
   int now_sec = fromstart.sec();
 
   // do any catching up we need to
-  bool twice = now_sec - last_flush >= 2 * g_conf.profiling_logger_interval;
+  bool twice = now_sec - last_flush >= 2 * g_conf->profiling_logger_interval;
  again:
   generic_dout(20) << "fromstart " << fromstart << " last_flush " << last_flush << " flushing" << dendl;
   
@@ -181,7 +181,7 @@ static void flush_all_loggers()
   if (reset && logger_need_reset)
     logger_need_reset = false;
 
-  last_flush = now_sec - (now_sec % g_conf.profiling_logger_interval);
+  last_flush = now_sec - (now_sec % g_conf->profiling_logger_interval);
   if (twice) {
     twice = false;
     goto again;
@@ -189,7 +189,7 @@ static void flush_all_loggers()
 
   // schedule next flush event
   utime_t next;
-  next.sec_ref() = start.sec() + last_flush + g_conf.profiling_logger_interval;
+  next.sec_ref() = start.sec() + last_flush + g_conf->profiling_logger_interval;
   next.nsec_ref() = start.nsec();
   generic_dout(20) << "logger now=" << now
                   << "  start=" << start 
@@ -215,8 +215,8 @@ void ProfLogger::_open_log()
   struct stat st;
 
   filename = "";
-  if ((!g_conf.chdir.empty()) &&
-      (g_conf.profiling_logger_dir.substr(0,1) != "/")) {
+  if ((!g_conf->chdir.empty()) &&
+      (g_conf->profiling_logger_dir.substr(0,1) != "/")) {
     char cwd[PATH_MAX];
     char *c = getcwd(cwd, sizeof(cwd));
     assert(c);
@@ -224,15 +224,15 @@ void ProfLogger::_open_log()
     filename += "/";
   }
   
-  filename = g_conf.profiling_logger_dir;
+  filename = g_conf->profiling_logger_dir;
 
   // make (feeble) attempt to create logger_dir
   if (::stat(filename.c_str(), &st))
     ::mkdir(filename.c_str(), 0750);
 
   filename += "/";
-  if (!g_conf.profiling_logger_subdir.empty()) {
-    filename += g_conf.profiling_logger_subdir;
+  if (!g_conf->profiling_logger_subdir.empty()) {
+    filename += g_conf->profiling_logger_subdir;
     ::mkdir( filename.c_str(), 0755 );   // make sure dir exists
     filename += "/";
   }
@@ -313,7 +313,7 @@ void ProfLogger::_flush()
       if (vals[i] > 0) {
        double avg = (fvals[i] / (double)vals[i]);
        double var = 0.0;
-       if (g_conf.profiling_logger_calc_variance &&
+       if (g_conf->profiling_logger_calc_variance &&
            (unsigned)vals[i] == vals_to_avg[i].size()) {
          for (vector<double>::iterator p = vals_to_avg[i].begin(); p != vals_to_avg[i].end(); ++p) 
            var += (avg - *p) * (avg - *p);
@@ -348,7 +348,7 @@ void ProfLogger::_flush()
 
 int64_t ProfLogger::inc(int key, int64_t v)
 {
-  if (!g_conf.profiling_logger)
+  if (!g_conf->profiling_logger)
     return 0;
   prof_logger_lock.Lock();
   int i = type->lookup_key(key);
@@ -360,7 +360,7 @@ int64_t ProfLogger::inc(int key, int64_t v)
 
 double ProfLogger::finc(int key, double v)
 {
-  if (!g_conf.profiling_logger)
+  if (!g_conf->profiling_logger)
     return 0;
   prof_logger_lock.Lock();
   int i = type->lookup_key(key);
@@ -372,7 +372,7 @@ double ProfLogger::finc(int key, double v)
 
 int64_t ProfLogger::set(int key, int64_t v)
 {
-  if (!g_conf.profiling_logger)
+  if (!g_conf->profiling_logger)
     return 0;
   prof_logger_lock.Lock();
   int i = type->lookup_key(key);
@@ -385,7 +385,7 @@ int64_t ProfLogger::set(int key, int64_t v)
 
 double ProfLogger::fset(int key, double v)
 {
-  if (!g_conf.profiling_logger)
+  if (!g_conf->profiling_logger)
     return 0;
   prof_logger_lock.Lock();
   int i = type->lookup_key(key);
@@ -397,13 +397,13 @@ double ProfLogger::fset(int key, double v)
 
 double ProfLogger::favg(int key, double v)
 {
-  if (!g_conf.profiling_logger)
+  if (!g_conf->profiling_logger)
     return 0;
   prof_logger_lock.Lock();
   int i = type->lookup_key(key);
   vals[i]++;
   double r = fvals[i] += v;
-  if (g_conf.profiling_logger_calc_variance)
+  if (g_conf->profiling_logger_calc_variance)
     vals_to_avg[i].push_back(v);
   prof_logger_lock.Unlock();
   return r;
@@ -411,7 +411,7 @@ double ProfLogger::favg(int key, double v)
 
 int64_t ProfLogger::get(int key)
 {
-  if (!g_conf.profiling_logger)
+  if (!g_conf->profiling_logger)
     return 0;
   prof_logger_lock.Lock();
   int i = type->lookup_key(key);
index fd104ffb33153dea69e5839c54c59a919837b9e6..31a9987be27a674ae435b250c933a4fae11792ab 100644 (file)
@@ -26,7 +26,7 @@
 // FIXME
 // These variables are here temporarily to make the transition easier.
 CephContext g_ceph_context __attribute__((init_priority(103)));
-md_config_t &g_conf(*g_ceph_context._conf);
+md_config_t *g_conf(g_ceph_context._conf);
 std::ostream *_dout(&g_ceph_context._dout);
 DoutStreambuf <char, std::basic_string<char>::traits_type> *_doss(g_ceph_context._doss);
 
index 42048528aee82f3774ff6365908e036e4d3f2f97..40d2daec8d994b8c79e6ba394d7b858b2437569a 100644 (file)
@@ -74,7 +74,7 @@ private:
 
 /* Globals (FIXME: remove) */ 
 extern CephContext g_ceph_context;
-extern md_config_t &g_conf;
+extern md_config_t *g_conf;
 extern std::ostream *_dout;
 extern DoutStreambuf <char, std::basic_string<char>::traits_type> *_doss;
 
index f0ade99f9717377fa9a16eca456abf5501e477d2..7e3f2e752480421a2c9575e49af4ea8f75d3c1c3 100644 (file)
@@ -226,8 +226,8 @@ void common_init_daemonize(const CephContext *cct, int flags)
       exit(1);
     }
   }
-  pidfile_write(&g_conf);
-  ret = g_ceph_context._doss->handle_pid_change(&g_conf);
+  pidfile_write(g_conf);
+  ret = g_ceph_context._doss->handle_pid_change(g_conf);
   if (ret) {
     derr << "common_init_daemonize: _doss->handle_pid_change failed with "
         << "error code " << ret << dendl;
index ca359a319f6fcd697a8c961b903b202459d8b144..2ea00635b420c42b742ea579f9657a3e913d2de0 100644 (file)
@@ -75,39 +75,39 @@ struct ceph_file_layout g_default_file_layout = {
 #define TYCHECK(x, ty) STATIC_ASSERT(sizeof(x) == sizeof(ty))
 
 #define OPTION_OPT_STR(name, def_val) \
-       { STRINGIFY(name) + TYCHECK(g_conf.name, std::string), \
+       { STRINGIFY(name) + TYCHECK(g_conf->name, std::string), \
          OPT_STR, offsetof(struct md_config_t, name), def_val, 0, 0 }
 
 #define OPTION_OPT_ADDR(name, def_val) \
-       { STRINGIFY(name) + TYCHECK(g_conf.name, entity_addr_t), \
+       { STRINGIFY(name) + TYCHECK(g_conf->name, entity_addr_t), \
         OPT_ADDR, offsetof(struct md_config_t, name), def_val, 0, 0 }
 
 #define OPTION_OPT_LONGLONG(name, def_val) \
-       { STRINGIFY(name) + TYCHECK(g_conf.name, long long), \
+       { STRINGIFY(name) + TYCHECK(g_conf->name, long long), \
          OPT_LONGLONG, offsetof(struct md_config_t, name), 0, def_val, 0 }
 
 #define OPTION_OPT_INT(name, def_val) \
-       { STRINGIFY(name) + TYCHECK(g_conf.name, int), \
+       { STRINGIFY(name) + TYCHECK(g_conf->name, int), \
          OPT_INT, offsetof(struct md_config_t, name), 0, def_val, 0 }
 
 #define OPTION_OPT_BOOL(name, def_val) \
-       { STRINGIFY(name) + TYCHECK(g_conf.name, bool), \
+       { STRINGIFY(name) + TYCHECK(g_conf->name, bool), \
          OPT_BOOL, offsetof(struct md_config_t, name), 0, def_val, 0 }
 
 #define OPTION_OPT_U32(name, def_val) \
-       { STRINGIFY(name) + TYCHECK(g_conf.name, uint32_t), \
+       { STRINGIFY(name) + TYCHECK(g_conf->name, uint32_t), \
          OPT_U32, offsetof(struct md_config_t, name), 0, def_val, 0 }
 
 #define OPTION_OPT_U64(name, def_val) \
-       { STRINGIFY(name) + TYCHECK(g_conf.name, uint64_t), \
+       { STRINGIFY(name) + TYCHECK(g_conf->name, uint64_t), \
          OPT_U64, offsetof(struct md_config_t, name), 0, def_val, 0 }
 
 #define OPTION_OPT_DOUBLE(name, def_val) \
-       { STRINGIFY(name) + TYCHECK(g_conf.name, double), \
+       { STRINGIFY(name) + TYCHECK(g_conf->name, double), \
         OPT_DOUBLE, offsetof(struct md_config_t, name), 0, 0, def_val }
 
 #define OPTION_OPT_FLOAT(name, def_val) \
-       { STRINGIFY(name) + TYCHECK(g_conf.name, float), \
+       { STRINGIFY(name) + TYCHECK(g_conf->name, float), \
         OPT_FLOAT, offsetof(struct md_config_t, name), 0, 0, def_val }
 
 #define OPTION(name, type, def_val) OPTION_##type(name, def_val)
index 47f2bd56635f1cc1e284440bd12511a57e2dcb5f..264a6850fd196a1a38e3849c9744f1af1a9ae5de 100644 (file)
@@ -68,7 +68,7 @@ inline std::ostream& operator<<(std::ostream& out, _bad_endl_use_dendl_t) {
 // generic macros
 #define debug_DOUT_SUBSYS debug
 #define dout_prefix *_dout
-#define DOUT_CONDVAR(x) g_conf.debug_ ## x
+#define DOUT_CONDVAR(x) g_conf->debug_ ## x
 #define XDOUT_CONDVAR(x) DOUT_CONDVAR(x)
 #define DOUT_COND(l) l <= XDOUT_CONDVAR(DOUT_SUBSYS)
 
@@ -98,7 +98,7 @@ inline std::ostream& operator<<(std::ostream& out, _bad_endl_use_dendl_t) {
     *_dout
 
 #define generic_dout(v) \
-  pdout(v, g_conf.debug)
+  pdout(v, g_conf->debug)
 
 #define dendl std::endl; } } while (0)
 
index ab863b8693b6f34303383b0123ad17d20bf7fd30..bdf042e6267644dc4f6c9d75f9a62ea39823b12d 100644 (file)
@@ -108,14 +108,14 @@ int main(int argc, const char **argv)
 
   // whoami
   char *end;
-  const char *id = g_conf.name.get_id().c_str();
+  const char *id = g_conf->name.get_id().c_str();
   int whoami = strtol(id, &end, 10);
   if (*end || end == id || whoami < 0) {
     derr << "must specify '-i #' where # is the osd number" << dendl;
     usage();
   }
 
-  if (g_conf.osd_data.empty()) {
+  if (g_conf->osd_data.empty()) {
     derr << "must specify '--osd-data=foo' data path" << dendl;
     usage();
   }
@@ -128,15 +128,15 @@ int main(int argc, const char **argv)
     if (mc.get_monmap_privately() < 0)
       return -1;
 
-    int err = OSD::mkfs(g_conf.osd_data, g_conf.osd_journal, mc.monmap.fsid, whoami);
+    int err = OSD::mkfs(g_conf->osd_data, g_conf->osd_journal, mc.monmap.fsid, whoami);
     if (err < 0) {
       derr << TEXT_RED << " ** ERROR: error creating empty object store in "
-          << g_conf.osd_data << ": " << cpp_strerror(-err) << TEXT_NORMAL << dendl;
+          << g_conf->osd_data << ": " << cpp_strerror(-err) << TEXT_NORMAL << dendl;
       exit(1);
     }
-    derr << "created object store " << g_conf.osd_data;
-    if (!g_conf.osd_journal.empty())
-      *_dout << " journal " << g_conf.osd_journal;
+    derr << "created object store " << g_conf->osd_data;
+    if (!g_conf->osd_journal.empty())
+      *_dout << " journal " << g_conf->osd_journal;
     *_dout << " for osd" << whoami << " fsid " << mc.monmap.fsid << dendl;
   }
   if (mkkey) {
@@ -146,45 +146,45 @@ int main(int argc, const char **argv)
       derr << "Unable to get a Ceph keyring." << dendl;
       return 1;
     }
-    EntityName ename(g_conf.name);
+    EntityName ename(g_conf->name);
     EntityAuth eauth;
     eauth.key.create(CEPH_CRYPTO_AES);
     keyring->add(ename, eauth);
     bufferlist bl;
     keyring->encode_plaintext(bl);
-    int r = bl.write_file(g_conf.keyring.c_str(), 0600);
+    int r = bl.write_file(g_conf->keyring.c_str(), 0600);
     if (r)
-      derr << TEXT_RED << " ** ERROR: writing new keyring to " << g_conf.keyring
+      derr << TEXT_RED << " ** ERROR: writing new keyring to " << g_conf->keyring
           << ": " << cpp_strerror(r) << TEXT_NORMAL << dendl;
     else
-      derr << "created new key in keyring " << g_conf.keyring << dendl;
+      derr << "created new key in keyring " << g_conf->keyring << dendl;
   }
   if (mkfs || mkkey)
     exit(0);
   if (mkjournal) {
     common_init_finish(&g_ceph_context);
-    int err = OSD::mkjournal(g_conf.osd_data, g_conf.osd_journal);
+    int err = OSD::mkjournal(g_conf->osd_data, g_conf->osd_journal);
     if (err < 0) {
-      derr << TEXT_RED << " ** ERROR: error creating fresh journal " << g_conf.osd_journal
-          << " for object store " << g_conf.osd_data
+      derr << TEXT_RED << " ** ERROR: error creating fresh journal " << g_conf->osd_journal
+          << " for object store " << g_conf->osd_data
           << ": " << cpp_strerror(-err) << TEXT_NORMAL << dendl;
       exit(1);
     }
-    derr << "created new journal " << g_conf.osd_journal
-        << " for object store " << g_conf.osd_data << dendl;
+    derr << "created new journal " << g_conf->osd_journal
+        << " for object store " << g_conf->osd_data << dendl;
     exit(0);
   }
   if (flushjournal) {
     common_init_finish(&g_ceph_context);
-    int err = OSD::flushjournal(g_conf.osd_data, g_conf.osd_journal);
+    int err = OSD::flushjournal(g_conf->osd_data, g_conf->osd_journal);
     if (err < 0) {
-      derr << TEXT_RED << " ** ERROR: error flushing journal " << g_conf.osd_journal
-          << " for object store " << g_conf.osd_data
+      derr << TEXT_RED << " ** ERROR: error flushing journal " << g_conf->osd_journal
+          << " for object store " << g_conf->osd_data
           << ": " << cpp_strerror(-err) << TEXT_NORMAL << dendl;
       exit(1);
     }
-    derr << "flushed journal " << g_conf.osd_journal
-        << " for object store " << g_conf.osd_data
+    derr << "flushed journal " << g_conf->osd_journal
+        << " for object store " << g_conf->osd_data
         << dendl;
     exit(0);
   }
@@ -192,10 +192,10 @@ int main(int argc, const char **argv)
   string magic;
   ceph_fsid_t fsid;
   int w;
-  int r = OSD::peek_meta(g_conf.osd_data, magic, fsid, w);
+  int r = OSD::peek_meta(g_conf->osd_data, magic, fsid, w);
   if (r < 0) {
     derr << TEXT_RED << " ** ERROR: unable to open OSD superblock on "
-        << g_conf.osd_data << ": " << cpp_strerror(-r)
+        << g_conf->osd_data << ": " << cpp_strerror(-r)
         << TEXT_NORMAL << dendl;
     if (r == -ENOTSUP) {
       derr << TEXT_RED << " **        please verify that underlying storage "
@@ -213,14 +213,14 @@ int main(int argc, const char **argv)
     exit(1);
   }
 
-  bool client_addr_set = !g_conf.public_addr.is_blank_addr();
-  bool cluster_addr_set = !g_conf.cluster_addr.is_blank_addr();
+  bool client_addr_set = !g_conf->public_addr.is_blank_addr();
+  bool cluster_addr_set = !g_conf->cluster_addr.is_blank_addr();
 
   if (cluster_addr_set && !client_addr_set) {
     derr << TEXT_RED << " ** "
          << "WARNING: set cluster address but not client address!" << " **\n"
          << "using cluster address for clients" << TEXT_NORMAL << dendl;
-    g_conf.public_addr = g_conf.cluster_addr;
+    g_conf->public_addr = g_conf->cluster_addr;
     client_addr_set = true;
     cluster_addr_set = false;
   }
@@ -229,27 +229,27 @@ int main(int argc, const char **argv)
   SimpleMessenger *cluster_messenger = new SimpleMessenger();
   SimpleMessenger *messenger_hb = new SimpleMessenger();
 
-  client_messenger->bind(g_conf.public_addr, getpid());
-  cluster_messenger->bind(g_conf.cluster_addr, getpid());
+  client_messenger->bind(g_conf->public_addr, getpid());
+  cluster_messenger->bind(g_conf->cluster_addr, getpid());
 
   // hb should bind to same ip as cluster_addr (if specified)
-  entity_addr_t hb_addr = g_conf.cluster_addr;
+  entity_addr_t hb_addr = g_conf->cluster_addr;
   if (!hb_addr.is_blank_addr())
     hb_addr.set_port(0);
   messenger_hb->bind(hb_addr, getpid());
 
   cout << "starting osd" << whoami
        << " at " << client_messenger->get_ms_addr() 
-       << " osd_data " << g_conf.osd_data
-       << " " << ((g_conf.osd_journal.empty()) ?
-                   "(no journal)" : g_conf.osd_journal)
+       << " osd_data " << g_conf->osd_data
+       << " " << ((g_conf->osd_journal.empty()) ?
+                   "(no journal)" : g_conf->osd_journal)
        << std::endl;
 
   client_messenger->register_entity(entity_name_t::OSD(whoami));
   cluster_messenger->register_entity(entity_name_t::OSD(whoami));
   messenger_hb->register_entity(entity_name_t::OSD(whoami));
 
-  Throttle client_throttler(g_conf.osd_client_message_size_cap);
+  Throttle client_throttler(g_conf->osd_client_message_size_cap);
 
   uint64_t supported =
     CEPH_FEATURE_UID | 
@@ -283,7 +283,7 @@ int main(int argc, const char **argv)
   common_init_chdir(&g_ceph_context);
 
   OSD *osd = new OSD(whoami, cluster_messenger, client_messenger, messenger_hb, &mc,
-                    g_conf.osd_data, g_conf.osd_journal);
+                    g_conf->osd_data, g_conf->osd_journal);
   int err = osd->pre_init();
   if (err < 0) {
     derr << TEXT_RED << " ** ERROR: initializing osd failed: " << cpp_strerror(-err)
index c654cc3a962c92720eb231c217e19b2e59a9e7bf..da045ee6f120fe57b762031dd0adfecf26f68026 100644 (file)
@@ -60,11 +60,11 @@ int main(int argc, const char **argv, char *envp[])
 
   list<Client*> clients;
   list<SyntheticClient*> synclients;
-  SimpleMessenger* messengers[g_conf.num_client];
-  MonClient* mclients[g_conf.num_client];
+  SimpleMessenger* messengers[g_conf->num_client];
+  MonClient* mclients[g_conf->num_client];
 
-  cout << "csyn: starting " << g_conf.num_client << " syn client(s)" << std::endl;
-  for (int i=0; i<g_conf.num_client; i++) {
+  cout << "csyn: starting " << g_conf->num_client << " syn client(s)" << std::endl;
+  for (int i=0; i<g_conf->num_client; i++) {
     messengers[i] = new SimpleMessenger();
     messengers[i]->register_entity(entity_name_t(entity_name_t::TYPE_CLIENT,-1));
     messengers[i]->bind(i * 1000000 + getpid());
@@ -94,7 +94,7 @@ int main(int argc, const char **argv, char *envp[])
     delete client;
   }
 
-  for (int i = 0; i < g_conf.num_client; ++i) {
+  for (int i = 0; i < g_conf->num_client; ++i) {
     // wait for messenger to finish
     delete mclients[i];
     messengers[i]->wait();
index ad19aefc00a83b9a7da78de5f157e061c936a6c6..62371cd4208b5588bce733fb301b496e09008dc6 100644 (file)
@@ -98,7 +98,7 @@ struct librados::IoCtxImpl {
   IoCtxImpl(RadosClient *c, int pid, const char *pool_name_, snapid_t s) :
     ref_cnt(0), client(c), poolid(pid),
     pool_name(pool_name_), snap_seq(s), assert_ver(0),
-    notify_timeout(g_conf.client_notify_timeout), oloc(pid),
+    notify_timeout(g_conf->client_notify_timeout), oloc(pid),
     aio_write_list_lock("librados::IoCtxImpl::aio_write_list_lock"), aio_write_seq(0) {}
 
   void dup(const IoCtxImpl& rhs) {
index d7390d8e62bcc4b8f1eda16ad51c659c19db8512..0ddffec86ab9bd522acde36ac58267197f21148f 100644 (file)
@@ -100,7 +100,7 @@ ostream& operator<<(ostream& out, CDir& dir)
   out << " " << dir.fnode.fragstat;
   if (!(dir.fnode.fragstat == dir.fnode.accounted_fragstat))
     out << "/" << dir.fnode.accounted_fragstat;
-  if (g_conf.mds_debug_scatterstat && dir.is_projected()) {
+  if (g_conf->mds_debug_scatterstat && dir.is_projected()) {
     fnode_t *pf = dir.get_projected_fnode();
     out << "->" << pf->fragstat;
     if (!(pf->fragstat == pf->accounted_fragstat))
@@ -111,7 +111,7 @@ ostream& operator<<(ostream& out, CDir& dir)
   out << " " << dir.fnode.rstat;
   if (!(dir.fnode.rstat == dir.fnode.accounted_rstat))
     out << "/" << dir.fnode.accounted_rstat;
-  if (g_conf.mds_debug_scatterstat && dir.is_projected()) {
+  if (g_conf->mds_debug_scatterstat && dir.is_projected()) {
     fnode_t *pf = dir.get_projected_fnode();
     out << "->" << pf->rstat;
     if (!(pf->rstat == pf->accounted_rstat))
@@ -221,7 +221,7 @@ bool CDir::check_rstats()
       //if (i->second->get_linkage()->is_primary())
         dout(1) << *(i->second) << dendl;
     }
-    assert(!g_conf.mds_debug_scatterstat ||
+    assert(!g_conf->mds_debug_scatterstat ||
            (get_num_head_items() ==
             (fnode.fragstat.nfiles + fnode.fragstat.nsubdirs)));
   } else {
@@ -257,9 +257,9 @@ bool CDir::check_rstats()
     dout(25) << "my rstats:              " << fnode.rstat << dendl;
   }
 
-  assert(!g_conf.mds_debug_scatterstat || sub_info.rbytes == fnode.rstat.rbytes);
-  assert(!g_conf.mds_debug_scatterstat || sub_info.rfiles == fnode.rstat.rfiles);
-  assert(!g_conf.mds_debug_scatterstat || sub_info.rsubdirs == fnode.rstat.rsubdirs);
+  assert(!g_conf->mds_debug_scatterstat || sub_info.rbytes == fnode.rstat.rbytes);
+  assert(!g_conf->mds_debug_scatterstat || sub_info.rfiles == fnode.rstat.rfiles);
+  assert(!g_conf->mds_debug_scatterstat || sub_info.rsubdirs == fnode.rstat.rsubdirs);
   dout(10) << "check_rstats complete on " << this << dendl;
   return true;
 }
@@ -1896,7 +1896,7 @@ void CDir::_commit(version_t want)
   }
   
   // complete first?  (only if we're not using TMAPUP osd op)
-  if (!g_conf.mds_use_tmap && !is_complete()) {
+  if (!g_conf->mds_use_tmap && !is_complete()) {
     dout(7) << "commit not complete, fetching first" << dendl;
     if (cache->mds->logger) cache->mds->logger->inc(l_mds_dir_ffc);
     fetch(new C_Dir_RetryCommit(this, want));
@@ -1937,7 +1937,7 @@ void CDir::_commit(version_t want)
   max_write_size -= inode->encode_parent_mutation(m);
 
   if (is_complete() &&
-      (num_dirty > (num_head_items*g_conf.mds_dir_commit_ratio))) {
+      (num_dirty > (num_head_items*g_conf->mds_dir_commit_ratio))) {
     fnode.snap_purged_thru = realm->get_last_destroyed();
     committed_dn = _commit_full(m, snaps, max_write_size);
   } else {
index 94942dd8109fe960981dc01181b2c22f7472871f..ae048a21acbf1b681837a6845ee7c231aaa2adae 100644 (file)
@@ -363,10 +363,10 @@ public:
   void merge(list<CDir*>& subs, list<Context*>& waiters, bool replay);
 
   bool should_split() {
-    return (int)get_num_head_items() > g_conf.mds_bal_split_size;
+    return (int)get_num_head_items() > g_conf->mds_bal_split_size;
   }
   bool should_merge() {
-    return (int)get_num_head_items() < g_conf.mds_bal_merge_size;
+    return (int)get_num_head_items() < g_conf->mds_bal_merge_size;
   }
 
 private:
index 76b0d964612d4486cb2c22398a5ae65c114a7483..ca2b52e36caaebc8885b00360f6d019ca9925a6b 100644 (file)
@@ -139,7 +139,7 @@ ostream& operator<<(ostream& out, CInode& in)
 
   if (in.inode.is_dir()) {
     out << " " << in.inode.dirstat;
-    if (g_conf.mds_debug_scatterstat && in.is_projected()) {
+    if (g_conf->mds_debug_scatterstat && in.is_projected()) {
       inode_t *pi = in.get_projected_inode();
       out << "->" << pi->dirstat;
     }
@@ -153,7 +153,7 @@ ostream& operator<<(ostream& out, CInode& in)
   out << " " << in.inode.rstat;
   if (!(in.inode.rstat == in.inode.accounted_rstat))
     out << "/" << in.inode.accounted_rstat;
-  if (g_conf.mds_debug_scatterstat && in.is_projected()) {
+  if (g_conf->mds_debug_scatterstat && in.is_projected()) {
     inode_t *pi = in.get_projected_inode();
     out << "->" << pi->rstat;
     if (!(pi->rstat == pi->accounted_rstat))
@@ -1345,7 +1345,7 @@ void CInode::decode_lock_state(int type, bufferlist& bl)
            dirfragtree.force_to_leaf(p->first);
          }
       }
-      if (g_conf.mds_debug_frag)
+      if (g_conf->mds_debug_frag)
        verify_dirfrags();
     }
     break;
@@ -1725,7 +1725,7 @@ void CInode::finish_scatter_gather_update(int type)
          if (pf->fragstat.nsubdirs < 0)
            pf->fragstat.nsubdirs = 0;
 
-         assert(!"bad/negative frag size" == g_conf.mds_verify_scatter);
+         assert(!"bad/negative frag size" == g_conf->mds_verify_scatter);
        }
 
        if (update) {
@@ -1745,7 +1745,7 @@ void CInode::finish_scatter_gather_update(int type)
            pi->dirstat = pf->fragstat;
            pi->dirstat.version = v;
 
-           assert(!"unmatched fragstat size" == g_conf.mds_verify_scatter);
+           assert(!"unmatched fragstat size" == g_conf->mds_verify_scatter);
          }
        }
       }
@@ -1763,7 +1763,7 @@ void CInode::finish_scatter_gather_update(int type)
        if (pi->dirstat.nsubdirs < 0)
          pi->dirstat.nsubdirs = 0;
 
-       assert(!"bad/negative dir size" == g_conf.mds_verify_scatter);
+       assert(!"bad/negative dir size" == g_conf->mds_verify_scatter);
       }
     }
     break;
@@ -1828,7 +1828,7 @@ void CInode::finish_scatter_gather_update(int type)
            pi->rstat = pf->rstat;
            pi->rstat.version = v;
            
-           assert(!"unmatched rstat rbytes" == g_conf.mds_verify_scatter);
+           assert(!"unmatched rstat rbytes" == g_conf->mds_verify_scatter);
          }
        }
        if (update)
@@ -2028,7 +2028,7 @@ void CInode::adjust_nested_auth_pins(int a)
           << dendl;
   assert(nested_auth_pins >= 0);
 
-  if (g_conf.mds_debug_auth_pins) {
+  if (g_conf->mds_debug_auth_pins) {
     // audit
     int s = 0;
     for (map<frag_t,CDir*>::iterator p = dirfrags.begin();
index b851fc9ad3181367cf9fee23105df8d66054d1fa..3b4a145e6fff27eba0cde133a230dd548acd9341 100644 (file)
@@ -373,7 +373,7 @@ public:
   bool has_dirfrags() { return !dirfrags.empty(); }
   CDir* get_dirfrag(frag_t fg) {
     if (dirfrags.count(fg)) {
-      //assert(g_conf.debug_mds < 2 || dirfragtree.is_leaf(fg)); // performance hack FIXME
+      //assert(g_conf->debug_mds < 2 || dirfragtree.is_leaf(fg)); // performance hack FIXME
       return dirfrags[fg];
     } else
       return 0;
index 6a61ce8aae90418d6deedd6b7d1261cbccc458a6..0c7e42bd5f48a3623e154827c72c384708f1608c 100644 (file)
@@ -84,7 +84,7 @@ void Dumper::dump(const char *dump_file)
 {
   bool done = false;
   Cond cond;
-  int rank = strtol(g_conf.name.get_id().c_str(), 0, 0);
+  int rank = strtol(g_conf->name.get_id().c_str(), 0, 0);
   inodeno_t ino = MDS_INO_LOG_OFFSET + rank;
 
   lock.Lock();
index fcb594c766582cb8e44d60f791e539a0d84e0281..4318ba5cf4be0900c3eb81cf30a3726c2ac95d29 100644 (file)
@@ -3515,7 +3515,7 @@ void Locker::scatter_tick()
               << *lock << " " << *lock->get_parent() << dendl;
       continue;
     }
-    if (now - lock->get_update_stamp() < g_conf.mds_scatter_nudge_interval)
+    if (now - lock->get_update_stamp() < g_conf->mds_scatter_nudge_interval)
       break;
     updated_scatterlocks.pop_front();
     scatter_nudge(lock, 0);
index bdfdf4144d931e1d38deffac128aa6e8ed5d3e1b..db4a07f19f80678f9feb1a46edb01561a7d93e66 100644 (file)
@@ -37,7 +37,7 @@ using std::vector;
 
 #define DOUT_SUBSYS mds
 #undef DOUT_COND
-#define DOUT_COND(l) l<=g_conf.debug_mds || l <= g_conf.debug_mds_balancer
+#define DOUT_COND(l) l<=g_conf->debug_mds || l <= g_conf->debug_mds_balancer
 #undef dout_prefix
 #define dout_prefix *_dout << "mds" << mds->get_nodeid() << ".bal "
 
@@ -70,14 +70,14 @@ int MDBalancer::proc_message(Message *m)
 
 void MDBalancer::tick()
 {
-  static int num_bal_times = g_conf.mds_bal_max;
+  static int num_bal_times = g_conf->mds_bal_max;
   static utime_t first = g_clock.now();
   utime_t now = g_clock.now();
   utime_t elapsed = now;
   elapsed -= first;
 
   // sample?
-  if ((double)now - (double)last_sample > g_conf.mds_bal_sample_interval) {
+  if ((double)now - (double)last_sample > g_conf->mds_bal_sample_interval) {
     dout(15) << "tick last_sample now " << now << dendl;
     last_sample = now;
   }
@@ -86,20 +86,20 @@ void MDBalancer::tick()
   if (last_heartbeat == utime_t())
     last_heartbeat = now;
   if (mds->get_nodeid() == 0 &&
-      g_conf.mds_bal_interval > 0 &&
+      g_conf->mds_bal_interval > 0 &&
       (num_bal_times ||
-       (g_conf.mds_bal_max_until >= 0 &&
-       elapsed.sec() > g_conf.mds_bal_max_until)) &&
+       (g_conf->mds_bal_max_until >= 0 &&
+       elapsed.sec() > g_conf->mds_bal_max_until)) &&
       mds->is_active() &&
-      now.sec() - last_heartbeat.sec() >= g_conf.mds_bal_interval) {
+      now.sec() - last_heartbeat.sec() >= g_conf->mds_bal_interval) {
     last_heartbeat = now;
     send_heartbeat();
     num_bal_times--;
   }
 
   // hash?
-  if (g_conf.mds_bal_frag && g_conf.mds_bal_fragment_interval > 0 &&
-      now.sec() - last_fragment.sec() > g_conf.mds_bal_fragment_interval) {
+  if (g_conf->mds_bal_frag && g_conf->mds_bal_fragment_interval > 0 &&
+      now.sec() - last_fragment.sec() > g_conf->mds_bal_fragment_interval) {
     last_fragment = now;
     do_fragmenting();
   }
@@ -122,7 +122,7 @@ public:
 
 double mds_load_t::mds_load()
 {
-  switch(g_conf.mds_bal_mode) {
+  switch(g_conf->mds_bal_mode) {
   case 0:
     return
       .8 * auth.meta_load() +
@@ -353,7 +353,7 @@ void MDBalancer::do_fragmenting()
        continue;
 
       dout(0) << "do_fragmenting splitting " << *dir << dendl;
-      mds->mdcache->split_dir(dir, g_conf.mds_bal_split_bits);
+      mds->mdcache->split_dir(dir, g_conf->mds_bal_split_bits);
     }
   }
 
@@ -411,7 +411,7 @@ void MDBalancer::do_fragmenting()
 
 void MDBalancer::prep_rebalance(int beat)
 {
-  if (g_conf.mds_thrash_exports) {
+  if (g_conf->mds_thrash_exports) {
     //we're going to randomly export to all the mds in the cluster
     my_targets.clear();
     set<int> up_mds;
@@ -474,7 +474,7 @@ void MDBalancer::prep_rebalance(int beat)
            << dendl;
 
     // under or over?
-    if (my_load < target_load * (1.0 + g_conf.mds_bal_min_rebalance)) {
+    if (my_load < target_load * (1.0 + g_conf->mds_bal_min_rebalance)) {
       dout(5) << "  i am underloaded or barely overloaded, doing nothing." << dendl;
       last_epoch_under = beat_epoch;
       show_imports();
@@ -587,7 +587,7 @@ void MDBalancer::try_rebalance()
   if (!check_targets())
     return;
 
-  if (g_conf.mds_thrash_exports) {
+  if (g_conf->mds_thrash_exports) {
     dout(5) << "mds_thrash is on; not performing standard rebalance operation!"
            << dendl;
     return;
@@ -606,8 +606,8 @@ void MDBalancer::try_rebalance()
     if (im->get_inode()->is_stray()) continue;
 
     double pop = im->pop_auth_subtree.meta_load(rebalance_time, mds->mdcache->decayrate);
-    if (g_conf.mds_bal_idle_threshold > 0 &&
-       pop < g_conf.mds_bal_idle_threshold &&
+    if (g_conf->mds_bal_idle_threshold > 0 &&
+       pop < g_conf->mds_bal_idle_threshold &&
        im->inode != mds->mdcache->get_root() &&
        im->inode->authority().first != mds->get_nodeid()) {
       dout(0) << " exporting idle (" << pop << ") import " << *im
@@ -641,7 +641,7 @@ void MDBalancer::try_rebalance()
        dout(0) << " total sent is " << total_sent << " / " << total_goal << " -> fac 1/ " << fac << dendl;
        if (fac > 1.0) fac = 1.0;
        }
-       fac = .9 - .4 * ((float)g_conf.num_mds / 128.0);  // hack magic fixme
+       fac = .9 - .4 * ((float)g_conf->num_mds / 128.0);  // hack magic fixme
       */
 
     int target = (*it).first;
@@ -799,9 +799,9 @@ bool MDBalancer::check_targets()
       continue;
     }
     dout(20) << " target mds" << p->first << " has been non-target for " << p->second << dendl;
-    if (p->second < g_conf.mds_bal_target_removal_min)
+    if (p->second < g_conf->mds_bal_target_removal_min)
       want_targets.insert(p->first);
-    if (p->second >= g_conf.mds_bal_target_removal_max)
+    if (p->second >= g_conf->mds_bal_target_removal_max)
       send = true;
     p++;
   }
@@ -822,12 +822,12 @@ void MDBalancer::find_exports(CDir *dir,
                               set<CDir*>& already_exporting)
 {
   double need = amount - have;
-  if (need < amount * g_conf.mds_bal_min_start)
+  if (need < amount * g_conf->mds_bal_min_start)
     return;   // good enough!
-  double needmax = need * g_conf.mds_bal_need_max;
-  double needmin = need * g_conf.mds_bal_need_min;
-  double midchunk = need * g_conf.mds_bal_midchunk;
-  double minchunk = need * g_conf.mds_bal_minchunk;
+  double needmax = need * g_conf->mds_bal_need_max;
+  double needmin = need * g_conf->mds_bal_need_min;
+  double midchunk = need * g_conf->mds_bal_midchunk;
+  double minchunk = need * g_conf->mds_bal_minchunk;
 
   list<CDir*> bigger_rep, bigger_unrep;
   multimap<double, CDir*> smaller;
@@ -979,7 +979,7 @@ void MDBalancer::hit_dir(utime_t now, CDir *dir, int type, int who, double amoun
   //dout(0) << "hit_dir " << type << " pop " << v << " in " << *dir << dendl;
 
   // split/merge
-  if (g_conf.mds_bal_frag && g_conf.mds_bal_fragment_interval > 0 &&
+  if (g_conf->mds_bal_frag && g_conf->mds_bal_fragment_interval > 0 &&
       !dir->inode->is_base() &&        // not root/base (for now at least)
       dir->is_auth()) {
 
@@ -987,10 +987,10 @@ void MDBalancer::hit_dir(utime_t now, CDir *dir, int type, int who, double amoun
             << " size " << dir->get_num_head_items() << dendl;
 
     // split
-    if (g_conf.mds_bal_split_size > 0 &&
-       ((dir->get_num_head_items() > (unsigned)g_conf.mds_bal_split_size) ||
-        (v > g_conf.mds_bal_split_rd && type == META_POP_IRD) ||
-        (v > g_conf.mds_bal_split_wr && type == META_POP_IWR)) &&
+    if (g_conf->mds_bal_split_size > 0 &&
+       ((dir->get_num_head_items() > (unsigned)g_conf->mds_bal_split_size) ||
+        (v > g_conf->mds_bal_split_rd && type == META_POP_IRD) ||
+        (v > g_conf->mds_bal_split_wr && type == META_POP_IWR)) &&
        split_queue.count(dir->dirfrag()) == 0) {
       dout(1) << "hit_dir " << type << " pop is " << v << ", putting in split_queue: " << *dir << dendl;
       split_queue.insert(dir->dirfrag());
@@ -998,7 +998,7 @@ void MDBalancer::hit_dir(utime_t now, CDir *dir, int type, int who, double amoun
 
     // merge?
     if (dir->get_frag() != frag_t() &&
-       (dir->get_num_head_items() < (unsigned)g_conf.mds_bal_merge_size) &&
+       (dir->get_num_head_items() < (unsigned)g_conf->mds_bal_merge_size) &&
        merge_queue.count(dir->dirfrag()) == 0) {
       dout(1) << "hit_dir " << type << " pop is " << v << ", putting in merge_queue: " << *dir << dendl;
       merge_queue.insert(dir->dirfrag());
@@ -1030,7 +1030,7 @@ void MDBalancer::hit_dir(utime_t now, CDir *dir, int type, int who, double amoun
 
     if (dir->is_auth() && !dir->is_ambiguous_auth()) {
       if (!dir->is_rep() &&
-         dir_pop >= g_conf.mds_bal_replicate_threshold) {
+         dir_pop >= g_conf->mds_bal_replicate_threshold) {
        // replicate
        float rdp = dir->pop_me.get(META_POP_IRD).get(now, mds->mdcache->decayrate);
        rd_adj = rdp / mds->get_mds_map()->get_num_mds() - rdp;
@@ -1048,7 +1048,7 @@ void MDBalancer::hit_dir(utime_t now, CDir *dir, int type, int who, double amoun
 
       if (dir->ino() != 1 &&
          dir->is_rep() &&
-         dir_pop < g_conf.mds_bal_unreplicate_threshold) {
+         dir_pop < g_conf->mds_bal_unreplicate_threshold) {
        // unreplicate
        dout(0) << "unreplicating dir " << *dir << " pop " << dir_pop << dendl;
 
@@ -1207,7 +1207,7 @@ void MDBalancer::dump_pop_map()
 
       if (dir->is_auth()) {
         if (!dir->is_rep() &&
-            dir_pop >= g_conf.mds_bal_replicate_threshold) {
+            dir_pop >= g_conf->mds_bal_replicate_threshold) {
           // replicate
           dout(5) << "replicating dir " << *in << " pop " << dir_pop << dendl;
 
@@ -1216,7 +1216,7 @@ void MDBalancer::dump_pop_map()
         }
 
         if (dir->is_rep() &&
-            dir_pop < g_conf.mds_bal_unreplicate_threshold) {
+            dir_pop < g_conf->mds_bal_unreplicate_threshold) {
           // unreplicate
           dout(5) << "unreplicating dir " << *in << " pop " << dir_pop << dendl;
 
index bea88f197a3b9c703428a08a4cfb0992b1c0a97b..f5599b3c1a0ba37dab4fab304dd7d3f8650cfab6 100644 (file)
@@ -135,9 +135,9 @@ MDCache::MDCache(MDS *m)
   num_inodes_with_caps = 0;
   num_caps = 0;
 
-  max_dir_commit_size = g_conf.mds_dir_max_commit_size ?
-                        (g_conf.mds_dir_max_commit_size << 20) :
-                        (0.9 *(g_conf.osd_max_write_size << 20));
+  max_dir_commit_size = g_conf->mds_dir_max_commit_size ?
+                        (g_conf->mds_dir_max_commit_size << 20) :
+                        (0.9 *(g_conf->osd_max_write_size << 20));
 
   discover_last_tid = 0;
   find_ino_peer_last_tid = 0;
@@ -149,10 +149,10 @@ MDCache::MDCache(MDS *m)
   client_lease_durations[2] = 300.0;
 
   opening_root = open = false;
-  lru.lru_set_max(g_conf.mds_cache_size);
-  lru.lru_set_midpoint(g_conf.mds_cache_mid);
+  lru.lru_set_max(g_conf->mds_cache_size);
+  lru.lru_set_midpoint(g_conf->mds_cache_mid);
 
-  decayrate.set_halflife(g_conf.mds_decay_halflife);
+  decayrate.set_halflife(g_conf->mds_decay_halflife);
 
   did_shutdown_log_cap = false;
 }
@@ -167,7 +167,7 @@ MDCache::~MDCache()
 
 void MDCache::log_stat()
 {
-  mds->logger->set(l_mds_imax, g_conf.mds_cache_size);
+  mds->logger->set(l_mds_imax, g_conf->mds_cache_size);
   mds->logger->set(l_mds_i, lru.lru_get_size());
   mds->logger->set(l_mds_ipin, lru.lru_get_num_pinned());
   mds->logger->set(l_mds_itop, lru.lru_get_top());
@@ -285,7 +285,7 @@ CInode *MDCache::create_system_inode(inodeno_t ino, int mode)
   memset(&in->inode.dir_layout, 0, sizeof(in->inode.dir_layout));
   if (in->inode.is_dir()) {
     memset(&in->inode.layout, 0, sizeof(in->inode.layout));
-    in->inode.dir_layout.dl_dir_hash = g_conf.mds_default_dir_hash;
+    in->inode.dir_layout.dl_dir_hash = g_conf->mds_default_dir_hash;
     ++in->inode.rstat.rsubdirs;
   } else {
     in->inode.layout = default_file_layout;
@@ -1759,7 +1759,7 @@ void MDCache::project_rstat_frag_to_inode(nest_info_t& rstat, nest_info_t& accou
     dout(20) << "        result [" << first << "," << last << "] " << pi->rstat << dendl;
 
     if (pi->rstat.rbytes < 0)
-      assert(!"negative rstat rbytes" == g_conf.mds_verify_scatter);
+      assert(!"negative rstat rbytes" == g_conf->mds_verify_scatter);
 
     last = first-1;
   }
@@ -1931,12 +1931,12 @@ void MDCache::predirty_journal_parents(Mutation *mut, EMetaBlob *blob,
 
     // delay propagating until later?
     if (!stop && !first &&
-       g_conf.mds_dirstat_min_interval > 0) {
+       g_conf->mds_dirstat_min_interval > 0) {
       if (pin->last_dirstat_prop.sec() > 0) {
        double since_last_prop = mut->now - pin->last_dirstat_prop;
-       if (since_last_prop < g_conf.mds_dirstat_min_interval) {
+       if (since_last_prop < g_conf->mds_dirstat_min_interval) {
          dout(10) << "predirty_journal_parents last prop " << since_last_prop
-                  << " < " << g_conf.mds_dirstat_min_interval
+                  << " < " << g_conf->mds_dirstat_min_interval
                   << ", stopping" << dendl;
          stop = true;
        } else {
@@ -1996,7 +1996,7 @@ void MDCache::predirty_journal_parents(Mutation *mut, EMetaBlob *blob,
       dout(20) << "predirty_journal_parents     gives " << pi->dirstat << " on " << *pin << dendl;
 
       if (pi->dirstat.size() < 0)
-       assert(!"negative dirstat size" == g_conf.mds_verify_scatter);
+       assert(!"negative dirstat size" == g_conf->mds_verify_scatter);
       if (parent->get_frag() == frag_t()) { // i.e., we are the only frag
        if (pi->dirstat.size() != pf->fragstat.size()) {
          mds->clog.error() << "unmatched fragstat size on single dirfrag "
@@ -2006,7 +2006,7 @@ void MDCache::predirty_journal_parents(Mutation *mut, EMetaBlob *blob,
          // trust the dirfrag for now
          pi->dirstat = pf->fragstat;
 
-         assert(!"unmatched fragstat size" == g_conf.mds_verify_scatter);
+         assert(!"unmatched fragstat size" == g_conf->mds_verify_scatter);
        }
       }
     }
@@ -2053,7 +2053,7 @@ void MDCache::predirty_journal_parents(Mutation *mut, EMetaBlob *blob,
          // trust the dirfrag for now
          pi->rstat = pf->rstat;
 
-         assert(!"unmatched rstat rbytes" == g_conf.mds_verify_scatter);
+         assert(!"unmatched rstat rbytes" == g_conf->mds_verify_scatter);
        }
       }
     }
@@ -5202,7 +5202,7 @@ bool MDCache::trim(int max)
 {
   // trim LRU
   if (max < 0) {
-    max = g_conf.mds_cache_size;
+    max = g_conf->mds_cache_size;
     if (!max) return false;
   }
   dout(7) << "trim max=" << max << "  cur=" << lru.lru_get_size() << dendl;
@@ -5942,7 +5942,7 @@ void MDCache::check_memory_usage()
           << ", malloc " << last.malloc << " mmap " << last.mmap
           << ", baseline " << baseline.get_heap()
           << ", buffers " << (buffer::get_total_alloc() >> 10)
-          << ", max " << g_conf.mds_mem_max
+          << ", max " << g_conf->mds_mem_max
           << ", " << num_inodes_with_caps << " / " << inode_map.size() << " inodes have caps"
           << ", " << num_caps << " caps, " << caps_per_inode << " caps per inode"
           << dendl;
@@ -5952,14 +5952,14 @@ void MDCache::check_memory_usage()
   mds->mlogger->set(l_mdm_malloc, last.malloc);
 
   /*int size = last.get_total();
-  if (size > g_conf.mds_mem_max * .9) {
-    float ratio = (float)g_conf.mds_mem_max * .9 / (float)size;
+  if (size > g_conf->mds_mem_max * .9) {
+    float ratio = (float)g_conf->mds_mem_max * .9 / (float)size;
     if (ratio < 1.0)
       mds->server->recall_client_state(ratio);
   } else 
     */
-  if (num_inodes_with_caps > g_conf.mds_cache_size) {
-    float ratio = (float)g_conf.mds_cache_size * .9 / (float)num_inodes_with_caps;
+  if (num_inodes_with_caps > g_conf->mds_cache_size) {
+    float ratio = (float)g_conf->mds_cache_size * .9 / (float)num_inodes_with_caps;
     if (ratio < 1.0)
       mds->server->recall_client_state(ratio);
   }
@@ -5985,11 +5985,11 @@ void MDCache::shutdown_check()
   dout(0) << "shutdown_check at " << g_clock.now() << dendl;
 
   // cache
-  int o = g_conf.debug_mds;
-  g_conf.debug_mds = 10;
+  int o = g_conf->debug_mds;
+  g_conf->debug_mds = 10;
   show_cache();
-  g_conf.debug_mds = o;
-  mds->timer.add_event_after(g_conf.mds_shutdown_check, new C_MDC_ShutdownCheck(this));
+  g_conf->debug_mds = o;
+  mds->timer.add_event_after(g_conf->mds_shutdown_check, new C_MDC_ShutdownCheck(this));
 
   // this
   dout(0) << "lru size now " << lru.lru_get_size() << dendl;
@@ -6007,10 +6007,10 @@ void MDCache::shutdown_start()
 {
   dout(2) << "shutdown_start" << dendl;
 
-  if (g_conf.mds_shutdown_check)
-    mds->timer.add_event_after(g_conf.mds_shutdown_check, new C_MDC_ShutdownCheck(this));
+  if (g_conf->mds_shutdown_check)
+    mds->timer.add_event_after(g_conf->mds_shutdown_check, new C_MDC_ShutdownCheck(this));
 
-  //  g_conf.debug_mds = 10;
+  //  g_conf->debug_mds = 10;
 }
 
 
@@ -9598,7 +9598,7 @@ void MDCache::fragment_frozen(list<CDir*>& dirs, frag_t basefrag, int bits)
   list<CDir*> resultfrags;
   list<Context*> waiters;
   adjust_dir_fragments(diri, dirs, basefrag, bits, resultfrags, waiters, false);
-  if (g_conf.mds_debug_frag)
+  if (g_conf->mds_debug_frag)
     diri->verify_dirfrags();
   mds->queue_waiters(waiters);
 
@@ -9739,7 +9739,7 @@ void MDCache::handle_fragment_notify(MMDSFragmentNotify *notify)
     list<CDir*> resultfrags;
     adjust_dir_fragments(diri, base, bits, 
                         resultfrags, waiters, false);
-    if (g_conf.mds_debug_frag)
+    if (g_conf->mds_debug_frag)
       diri->verify_dirfrags();
     
     /*
@@ -9768,7 +9768,7 @@ void MDCache::rollback_uncommitted_fragments()
     list<CDir*> resultfrags;
     list<Context*> waiters;
     adjust_dir_fragments(diri, p->first.frag, -p->second, resultfrags, waiters, true);
-    if (g_conf.mds_debug_frag)
+    if (g_conf->mds_debug_frag)
       diri->verify_dirfrags();
 
     EFragment *le = new EFragment(mds->mdlog, EFragment::OP_ROLLBACK, diri->ino(), p->first.frag, p->second);
@@ -9786,7 +9786,7 @@ void MDCache::show_subtrees(int dbl)
 {
   //dout(10) << "show_subtrees" << dendl;
 
-  if (dbl > g_conf.debug && dbl > g_conf.debug_mds) 
+  if (dbl > g_conf->debug && dbl > g_conf->debug_mds) 
     return;  // i won't print anything.
 
   if (subtrees.empty()) {
index a871821cabf0d3aa2f5e7f57fcdd640cf677fbe6..dcc9c0450aa1243c89924659978a9316b54b4950 100644 (file)
@@ -29,7 +29,7 @@
 
 #define DOUT_SUBSYS mds
 #undef DOUT_COND
-#define DOUT_COND(l) l<=g_conf.debug_mds || l <= g_conf.debug_mds_log
+#define DOUT_COND(l) l<=g_conf->debug_mds || l <= g_conf->debug_mds_log
 #undef dout_prefix
 #define dout_prefix *_dout << "mds" << mds->get_nodeid() << ".log "
 
@@ -77,7 +77,7 @@ void MDLog::open_logger()
 
   // logger
   char name[80];
-  snprintf(name, sizeof(name), "mds.%s.log", g_conf.name.get_id().c_str());
+  snprintf(name, sizeof(name), "mds.%s.log", g_conf->name.get_id().c_str());
   logger = new ProfLogger(name, &mdlog_logtype);
   logger_add(logger);
 }
@@ -157,7 +157,7 @@ void MDLog::submit_entry(LogEvent *le, Context *c)
   assert(le == cur_event);
   cur_event = NULL;
 
-  if (!g_conf.mds_log) {
+  if (!g_conf->mds_log) {
     // hack: log is disabled.
     if (c) {
       c->finish(0);
@@ -220,7 +220,7 @@ void MDLog::submit_entry(LogEvent *le, Context *c)
 
 void MDLog::wait_for_safe(Context *c)
 {
-  if (g_conf.mds_log) {
+  if (g_conf->mds_log) {
     // wait
     journaler->wait_for_flush(c);
   } else {
@@ -288,8 +288,8 @@ void MDLog::_logged_subtree_map(uint64_t off)
 
 void MDLog::trim(int m)
 {
-  int max_segments = g_conf.mds_log_max_segments;
-  int max_events = g_conf.mds_log_max_events;
+  int max_segments = g_conf->mds_log_max_segments;
+  int max_events = g_conf->mds_log_max_events;
   if (m >= 0)
     max_events = m;
 
@@ -316,7 +316,7 @@ void MDLog::trim(int m)
     if (stop < g_clock.now())
       break;
 
-    if ((int)expiring_segments.size() >= g_conf.mds_log_max_expiring)
+    if ((int)expiring_segments.size() >= g_conf->mds_log_max_expiring)
       break;
 
     // look at first segment
@@ -529,7 +529,7 @@ void MDLog::_replay_thread()
       bl.hexdump(*_dout);
       *_dout << dendl;
 
-      assert(!!"corrupt log event" == g_conf.mds_log_skip_corrupt_events);
+      assert(!!"corrupt log event" == g_conf->mds_log_skip_corrupt_events);
       continue;
     }
 
index d2cdaaccd8442320c21c616f7f4e87c903a8dd5c..cbc9d0a902426625afcf60a4373ed48f1ec7a4b5 100644 (file)
@@ -276,13 +276,13 @@ void MDS::open_logger()
   // open loggers
   char name[80];
   snprintf(name, sizeof(name), "mds.%s.%llu.log",
-          g_conf.name.get_id().c_str(),
+          g_conf->name.get_id().c_str(),
            (unsigned long long) monc->get_global_id());
   logger = new ProfLogger(name, (ProfLogType*)&mds_logtype);
   logger_add(logger);
 
   snprintf(name, sizeof(name), "mds.%s.%llu.mem.log",
-          g_conf.name.get_id().c_str(),
+          g_conf->name.get_id().c_str(),
            (unsigned long long) monc->get_global_id());
   mlogger = new ProfLogger(name, (ProfLogType*)&mdm_logtype);
   logger_add(mlogger);
@@ -478,16 +478,16 @@ int MDS::init(int wanted_state)
 
   timer.init();
 
-  if (wanted_state==MDSMap::STATE_BOOT && g_conf.mds_standby_replay)
+  if (wanted_state==MDSMap::STATE_BOOT && g_conf->mds_standby_replay)
     wanted_state = MDSMap::STATE_STANDBY_REPLAY;
   // starting beacon.  this will induce an MDSMap from the monitor
   want_state = wanted_state;
   if (wanted_state==MDSMap::STATE_STANDBY_REPLAY ||
       wanted_state==MDSMap::STATE_ONESHOT_REPLAY) {
-    g_conf.mds_standby_replay = true;
+    g_conf->mds_standby_replay = true;
     if ( wanted_state == MDSMap::STATE_ONESHOT_REPLAY &&
-        (g_conf.mds_standby_for_rank == -1) &&
-        g_conf.mds_standby_for_name.empty()) {
+        (g_conf->mds_standby_for_rank == -1) &&
+        g_conf->mds_standby_for_name.empty()) {
       // uh-oh, must specify one or the other!
       dout(0) << "Specified oneshot replay mode but not an MDS!" << dendl;
       suicide();
@@ -496,8 +496,8 @@ int MDS::init(int wanted_state)
     standby_type = wanted_state;
   }
 
-  standby_for_rank = g_conf.mds_standby_for_rank;
-  standby_for_name.assign(g_conf.mds_standby_for_name);
+  standby_for_rank = g_conf->mds_standby_for_rank;
+  standby_for_name.assign(g_conf->mds_standby_for_name);
 
   if (wanted_state == MDSMap::STATE_STANDBY_REPLAY &&
       standby_for_rank == -1) {
@@ -533,7 +533,7 @@ void MDS::reset_tick()
 
   // schedule
   tick_event = new C_MDS_Tick(this);
-  timer.add_event_after(g_conf.mds_tick_interval, tick_event);
+  timer.add_event_after(g_conf->mds_tick_interval, tick_event);
 }
 
 void MDS::tick()
@@ -626,7 +626,7 @@ void MDS::beacon_send()
   // schedule next sender
   if (beacon_sender) timer.cancel_event(beacon_sender);
   beacon_sender = new C_MDS_BeaconSender(this);
-  timer.add_event_after(g_conf.mds_beacon_interval, beacon_sender);
+  timer.add_event_after(g_conf->mds_beacon_interval, beacon_sender);
 }
 
 
@@ -637,8 +637,8 @@ bool MDS::is_laggy()
 
   utime_t now = g_clock.now();
   utime_t since = now - beacon_last_acked_stamp;
-  if (since > g_conf.mds_beacon_grace) {
-    dout(5) << "is_laggy " << since << " > " << g_conf.mds_beacon_grace
+  if (since > g_conf->mds_beacon_grace) {
+    dout(5) << "is_laggy " << since << " > " << g_conf->mds_beacon_grace
            << " since last acked beacon" << dendl;
     was_laggy = true;
     return true;
@@ -663,7 +663,7 @@ void MDS::handle_mds_beacon(MMDSBeacon *m)
             << " seq " << m->get_seq() 
             << " rtt " << rtt << dendl;
 
-    if (was_laggy && rtt < g_conf.mds_beacon_grace) {
+    if (was_laggy && rtt < g_conf->mds_beacon_grace) {
       dout(0) << "handle_mds_beacon no longer laggy" << dendl;
       was_laggy = false;
       laggy_until = now;
@@ -686,7 +686,7 @@ void MDS::handle_mds_beacon(MMDSBeacon *m)
 void MDS::reset_beacon_killer()
 {
   utime_t when = beacon_last_acked_stamp;
-  when += g_conf.mds_beacon_grace;
+  when += g_conf->mds_beacon_grace;
   
   dout(25) << "reset_beacon_killer last_acked_stamp at " << beacon_last_acked_stamp
           << ", will die at " << when << dendl;
@@ -717,7 +717,7 @@ void MDS::handle_command(MMonCommand *m)
 {
   dout(10) << "handle_command args: " << m->cmd << dendl;
   if (m->cmd[0] == "injectargs")
-    g_conf.injectargs(m->cmd[1]);
+    g_conf->injectargs(m->cmd[1]);
   else if (m->cmd[0] == "dumpcache") {
     if (m->cmd.size() > 1)
       mdcache->dump_cache(m->cmd[1].c_str());
@@ -934,7 +934,7 @@ void MDS::handle_mds_map(MMDSMap *m)
     objecter->set_client_incarnation(incarnation);
 
   // for debug
-  if (g_conf.mds_dump_cache_on_map)
+  if (g_conf->mds_dump_cache_on_map)
     mdcache->dump_cache();
 
   // did it change?
@@ -997,7 +997,7 @@ void MDS::handle_mds_map(MMDSMap *m)
       rejoin_joint_start();
 
     // did we finish?
-    if (g_conf.mds_dump_cache_after_rejoin &&
+    if (g_conf->mds_dump_cache_after_rejoin &&
        oldmap->is_rejoining() && !mdsmap->is_rejoining()) 
       mdcache->dump_cache();      // for DEBUG only
   }
@@ -1345,7 +1345,7 @@ void MDS::replay_done()
 
   if (is_standby_replay()) {
     dout(10) << "setting replay timer" << dendl;
-    timer.add_event_after(g_conf.mds_replay_interval,
+    timer.add_event_after(g_conf->mds_replay_interval,
                           new C_MDS_StandbyReplayRestart(this));
     return;
   }
@@ -1361,18 +1361,18 @@ void MDS::replay_done()
   mdlog->get_journaler()->set_writeable();
   mdlog->get_journaler()->trim_tail();
 
-  if (g_conf.mds_wipe_sessions) {
+  if (g_conf->mds_wipe_sessions) {
     dout(1) << "wiping out client sessions" << dendl;
     sessionmap.wipe();
     sessionmap.save(new C_NoopContext);
   }
-  if (g_conf.mds_wipe_ino_prealloc) {
+  if (g_conf->mds_wipe_ino_prealloc) {
     dout(1) << "wiping out ino prealloc from sessions" << dendl;
     sessionmap.wipe_ino_prealloc();
     sessionmap.save(new C_NoopContext);
   }
-  if (g_conf.mds_skip_ino) {
-    inodeno_t i = g_conf.mds_skip_ino;
+  if (g_conf->mds_skip_ino) {
+    inodeno_t i = g_conf->mds_skip_ino;
     dout(1) << "skipping " << i << " inodes" << dendl;
     inotable->skip_inos(i);
     inotable->save(new C_NoopContext);
@@ -1854,14 +1854,14 @@ bool MDS::_dispatch(Message *m)
   /*double el = now - start;
   if (el > 30.0 &&
     el < 60.0)*/
-  for (int i=0; i<g_conf.mds_thrash_exports; i++) {
+  for (int i=0; i<g_conf->mds_thrash_exports; i++) {
     set<int> s;
     if (!is_active()) break;
     mdsmap->get_mds_set(s, MDSMap::STATE_ACTIVE);
     if (s.size() < 2 || mdcache->get_num_inodes() < 10) 
       break;  // need peers for this to work.
 
-    dout(7) << "mds thrashing exports pass " << (i+1) << "/" << g_conf.mds_thrash_exports << dendl;
+    dout(7) << "mds thrashing exports pass " << (i+1) << "/" << g_conf->mds_thrash_exports << dendl;
     
     // pick a random dir inode
     CInode *in = mdcache->hack_pick_random_inode();
@@ -1888,9 +1888,9 @@ bool MDS::_dispatch(Message *m)
     mdcache->migrator->export_dir_nicely(dir,dest);
   }
   // hack: thrash fragments
-  for (int i=0; i<g_conf.mds_thrash_fragments; i++) {
+  for (int i=0; i<g_conf->mds_thrash_fragments; i++) {
     if (!is_active()) break;
-    dout(7) << "mds thrashing fragments pass " << (i+1) << "/" << g_conf.mds_thrash_fragments << dendl;
+    dout(7) << "mds thrashing fragments pass " << (i+1) << "/" << g_conf->mds_thrash_fragments << dendl;
     
     // pick a random dir inode
     CInode *in = mdcache->hack_pick_random_inode();
index df9369f75d34ef103dbaade4c40124d677e4d1cf..ae28ac4271eda801b410cc4e76bfe509f9fc1be4 100644 (file)
@@ -199,9 +199,9 @@ public:
   MDSMap() : epoch(0), flags(0), last_failure(0), last_failure_osd_epoch(0), tableserver(0), root(0),
             cas_pg_pool(-1), metadata_pg_pool(0) {
     // hack.. this doesn't really belong here
-    session_timeout = (int)g_conf.mds_session_timeout;
-    session_autoclose = (int)g_conf.mds_session_autoclose;
-    max_file_size = g_conf.mds_max_file_size;
+    session_timeout = (int)g_conf->mds_session_timeout;
+    session_autoclose = (int)g_conf->mds_session_autoclose;
+    max_file_size = g_conf->mds_max_file_size;
   }
 
   utime_t get_session_timeout() {
@@ -348,7 +348,7 @@ public:
        continue;
       if ((p->second.standby_for_rank == MDS_NO_STANDBY_PREF ||
           p->second.standby_for_rank == MDS_MATCHED_ACTIVE ||
-          (p->second.standby_for_rank == MDS_STANDBY_ANY && g_conf.mon_force_standby_active))) {
+          (p->second.standby_for_rank == MDS_STANDBY_ANY && g_conf->mon_force_standby_active))) {
        return p->first;
       }
     }
index 71b86a662d4243c78b135fa6550a4505b76cf0b3..4bd8deae38bbc46cda5870d5b679ee22ba033d14 100644 (file)
@@ -52,7 +52,7 @@ void MDSTableClient::handle_request(class MMDSTableRequest *m)
     if (pending_prepare.count(reqid)) {
       dout(10) << "got agree on " << reqid << " atid " << tid << dendl;
 
-      assert(g_conf.mds_kill_mdstable_at != 3);
+      assert(g_conf->mds_kill_mdstable_at != 3);
 
       Context *onfinish = pending_prepare[reqid].onfinish;
       *pending_prepare[reqid].ptid = tid;
@@ -87,7 +87,7 @@ void MDSTableClient::handle_request(class MMDSTableRequest *m)
        pending_commit[tid]->pending_commit_tids[table].count(tid)) {
       dout(10) << "got ack on tid " << tid << ", logging" << dendl;
       
-      assert(g_conf.mds_kill_mdstable_at != 7);
+      assert(g_conf->mds_kill_mdstable_at != 7);
       
       // remove from committing list
       pending_commit[tid]->pending_commit_tids[table].erase(tid);
@@ -113,7 +113,7 @@ void MDSTableClient::_logged_ack(version_t tid)
 {
   dout(10) << "_logged_ack " << tid << dendl;
 
-  assert(g_conf.mds_kill_mdstable_at != 8);
+  assert(g_conf->mds_kill_mdstable_at != 8);
 
   // kick any waiters (LogSegment trim)
   if (ack_waiters.count(tid)) {
@@ -159,7 +159,7 @@ void MDSTableClient::commit(version_t tid, LogSegment *ls)
   pending_commit[tid] = ls;
   ls->pending_commit_tids[table].insert(tid);
 
-  assert(g_conf.mds_kill_mdstable_at != 4);
+  assert(g_conf->mds_kill_mdstable_at != 4);
 
   // send message
   MMDSTableRequest *req = new MMDSTableRequest(table, TABLESERVER_OP_COMMIT, 0, tid);
index 1c97f95e40a9163628206fbd810f20b175ada2ba..fec3df28bb16600497fbe450f347e9fbad4ef221 100644 (file)
@@ -48,7 +48,7 @@ void MDSTableServer::handle_prepare(MMDSTableRequest *req)
   _prepare(req->bl, req->reqid, from);
   _note_prepare(from, req->reqid);
 
-  assert(g_conf.mds_kill_mdstable_at != 1);
+  assert(g_conf->mds_kill_mdstable_at != 1);
 
   ETableServer *le = new ETableServer(table, TABLESERVER_OP_PREPARE, req->reqid, from, version, version);
   mds->mdlog->start_entry(le);
@@ -61,7 +61,7 @@ void MDSTableServer::_prepare_logged(MMDSTableRequest *req, version_t tid)
 {
   dout(7) << "_create_logged " << *req << " tid " << tid << dendl;
 
-  assert(g_conf.mds_kill_mdstable_at != 2);
+  assert(g_conf->mds_kill_mdstable_at != 2);
 
   MMDSTableRequest *reply = new MMDSTableRequest(table, TABLESERVER_OP_AGREE, req->reqid, tid);
   reply->bl = req->bl;
@@ -80,7 +80,7 @@ void MDSTableServer::handle_commit(MMDSTableRequest *req)
 
   if (pending_for_mds.count(tid)) {
 
-    assert(g_conf.mds_kill_mdstable_at != 5);
+    assert(g_conf->mds_kill_mdstable_at != 5);
 
     _commit(tid);
     _note_commit(tid);
@@ -106,7 +106,7 @@ void MDSTableServer::_commit_logged(MMDSTableRequest *req)
 {
   dout(7) << "_commit_logged, sending ACK" << dendl;
 
-  assert(g_conf.mds_kill_mdstable_at != 6);
+  assert(g_conf->mds_kill_mdstable_at != 6);
 
   MMDSTableRequest *reply = new MMDSTableRequest(table, TABLESERVER_OP_ACK, req->reqid, req->get_tid());
   mds->send_message_mds(reply, req->get_source().num());
index bae79037b83bdedef7646ea19dee8b7fda102c0a..68f9cd71acbd93f0ac50cc9357b1d78a9752e9f3 100644 (file)
@@ -78,7 +78,7 @@
 
 #define DOUT_SUBSYS mds
 #undef DOUT_COND
-#define DOUT_COND(l) l <= g_conf.debug_mds || l <= g_conf.debug_mds_migrator
+#define DOUT_COND(l) l <= g_conf->debug_mds || l <= g_conf->debug_mds_migrator
 #undef dout_prefix
 #define dout_prefix *_dout << "mds" << mds->get_nodeid() << ".migrator "
 
@@ -405,7 +405,7 @@ void Migrator::handle_mds_failure_or_stop(int who)
            // notify them; wait in aborting state
            import_notify_abort(dir, bounds);
            import_state[df] = IMPORT_ABORTING;
-           assert(g_conf.mds_kill_import_at != 10);
+           assert(g_conf->mds_kill_import_at != 10);
          }
        }
        break;
@@ -496,7 +496,7 @@ void Migrator::show_exporting()
 
 void Migrator::audit()
 {
-  if (g_conf.debug_mds < 5) return;  // hrm.
+  if (g_conf->debug_mds < 5) return;  // hrm.
 
   // import_state
   show_importing();
@@ -664,13 +664,13 @@ void Migrator::export_dir(CDir *dir, int dest)
   export_peer[dir] = dest;
 
   dir->state_set(CDir::STATE_EXPORTING);
-  assert(g_conf.mds_kill_export_at != 1);
+  assert(g_conf->mds_kill_export_at != 1);
 
   // send ExportDirDiscover (ask target)
   filepath path;
   dir->inode->make_path(path);
   mds->send_message_mds(new MExportDirDiscover(mds->get_nodeid(), path, dir->dirfrag()), dest);
-  assert(g_conf.mds_kill_export_at != 2);
+  assert(g_conf->mds_kill_export_at != 2);
 
   // start the freeze, but hold it up with an auth_pin.
   dir->auth_pin(this);
@@ -702,7 +702,7 @@ void Migrator::handle_export_discover_ack(MExportDirDiscoverAck *m)
     // freeze the subtree
     export_state[dir] = EXPORT_FREEZING;
     dir->auth_unpin(this);
-    assert(g_conf.mds_kill_export_at != 3);
+    assert(g_conf->mds_kill_export_at != 3);
   }
   
   m->put();  // done
@@ -838,7 +838,7 @@ void Migrator::export_frozen(CDir *dir)
   // send.
   export_state[dir] = EXPORT_PREPPING;
   mds->send_message_mds(prep, dest);
-  assert (g_conf.mds_kill_export_at != 4);
+  assert (g_conf->mds_kill_export_at != 4);
 }
 
 /* This function DOES put the passed message before returning*/
@@ -857,7 +857,7 @@ void Migrator::handle_export_prep_ack(MExportDirPrepAck *m)
     return;
   }
 
-  assert (g_conf.mds_kill_export_at != 5);
+  assert (g_conf->mds_kill_export_at != 5);
   // send warnings
   int dest = export_peer[dir];
   set<CDir*> bounds;
@@ -886,7 +886,7 @@ void Migrator::handle_export_prep_ack(MExportDirPrepAck *m)
   }
   export_state[dir] = EXPORT_WARNING;
 
-  assert(g_conf.mds_kill_export_at != 6);
+  assert(g_conf->mds_kill_export_at != 6);
   // nobody to warn?
   if (export_warning_ack_waiting.count(dir) == 0) 
     export_go(dir);  // start export.
@@ -934,7 +934,7 @@ void Migrator::export_go_synced(CDir *dir)
   
   export_warning_ack_waiting.erase(dir);
   export_state[dir] = EXPORT_EXPORTING;
-  assert(g_conf.mds_kill_export_at != 7);
+  assert(g_conf->mds_kill_export_at != 7);
 
   assert(dir->get_cum_auth_pins() == 0);
 
@@ -964,7 +964,7 @@ void Migrator::export_go_synced(CDir *dir)
 
   // send
   mds->send_message_mds(req, dest);
-  assert(g_conf.mds_kill_export_at != 8);
+  assert(g_conf->mds_kill_export_at != 8);
 
   // stats
   if (mds->logger) mds->logger->inc(l_mds_ex);
@@ -1254,7 +1254,7 @@ void Migrator::handle_export_ack(MExportDirAck *m)
   export_warning_ack_waiting.erase(dir);
   
   export_state[dir] = EXPORT_LOGGINGFINISH;
-  assert (g_conf.mds_kill_export_at != 9);
+  assert (g_conf->mds_kill_export_at != 9);
   set<CDir*> bounds;
   cache->get_subtree_bounds(dir, bounds);
 
@@ -1283,7 +1283,7 @@ void Migrator::handle_export_ack(MExportDirAck *m)
   mds->mdlog->submit_entry(le);
   mds->mdlog->wait_for_safe(new C_MDS_ExportFinishLogged(this, dir));
   mds->mdlog->flush();
-  assert (g_conf.mds_kill_export_at != 10);
+  assert (g_conf->mds_kill_export_at != 10);
   
   m->put();
 }
@@ -1391,7 +1391,7 @@ void Migrator::export_logged_finish(CDir *dir)
 
   // wait for notifyacks
   export_state[dir] = EXPORT_NOTIFYING;
-  assert (g_conf.mds_kill_export_at != 11);
+  assert (g_conf->mds_kill_export_at != 11);
   
   // no notifies to wait for?
   if (export_notify_ack_waiting[dir].empty())
@@ -1466,7 +1466,7 @@ void Migrator::export_finish(CDir *dir)
 {
   dout(5) << "export_finish " << *dir << dendl;
 
-  assert (g_conf.mds_kill_export_at != 12);
+  assert (g_conf->mds_kill_export_at != 12);
   if (export_state.count(dir) == 0) {
     dout(7) << "target must have failed, not sending final commit message.  export succeeded anyway." << dendl;
     return;
@@ -1478,7 +1478,7 @@ void Migrator::export_finish(CDir *dir)
   } else {
     dout(7) << "not sending MExportDirFinish, dest has failed" << dendl;
   }
-  assert(g_conf.mds_kill_export_at != 13);
+  assert(g_conf->mds_kill_export_at != 13);
   
   // finish export (adjust local cache state)
   C_Contexts *fin = new C_Contexts;
@@ -1572,7 +1572,7 @@ void Migrator::handle_export_discover(MExportDirDiscover *m)
     return;
   }
 
-  assert (g_conf.mds_kill_import_at != 1);
+  assert (g_conf->mds_kill_import_at != 1);
 
   // do we have it?
   CInode *in = cache->get_inode(m->get_dirfrag().ino);
@@ -1603,7 +1603,7 @@ void Migrator::handle_export_discover(MExportDirDiscover *m)
   dout(7) << " sending export_discover_ack on " << *in << dendl;
   mds->send_message_mds(new MExportDirDiscoverAck(df), import_peer[df]);
   m->put();
-  assert (g_conf.mds_kill_import_at != 2);  
+  assert (g_conf->mds_kill_import_at != 2);  
 }
 
 void Migrator::import_reverse_discovering(dirfrag_t df)
@@ -1708,7 +1708,7 @@ void Migrator::handle_export_prep(MExportDirPrep *m)
 
     // change import state
     import_state[dir->dirfrag()] = IMPORT_PREPPING;
-    assert(g_conf.mds_kill_import_at != 3);
+    assert(g_conf->mds_kill_import_at != 3);
     import_bound_ls[dir] = m->get_bounds();
     
     // bystander list
@@ -1825,7 +1825,7 @@ void Migrator::handle_export_prep(MExportDirPrep *m)
   
   // note new state
   import_state[dir->dirfrag()] = IMPORT_PREPPED;
-  assert(g_conf.mds_kill_import_at != 4);
+  assert(g_conf->mds_kill_import_at != 4);
   // done 
   m->put();
 
@@ -1854,7 +1854,7 @@ public:
 /* This function DOES put the passed message before returning*/
 void Migrator::handle_export_dir(MExportDir *m)
 {
-  assert (g_conf.mds_kill_import_at != 5);
+  assert (g_conf->mds_kill_import_at != 5);
   CDir *dir = cache->get_dirfrag(m->dirfrag);
   assert(dir);
   
@@ -1919,7 +1919,7 @@ void Migrator::handle_export_dir(MExportDir *m)
 
   // note state
   import_state[dir->dirfrag()] = IMPORT_LOGGINGSTART;
-  assert (g_conf.mds_kill_import_at != 6);
+  assert (g_conf->mds_kill_import_at != 6);
 
   // some stats
   if (mds->logger) {
@@ -2063,7 +2063,7 @@ void Migrator::import_reverse(CDir *dir)
     dout(7) << "notifying bystanders of abort" << dendl;
     import_notify_abort(dir, bounds);
     import_state[dir->dirfrag()] = IMPORT_ABORTING;
-    assert (g_conf.mds_kill_import_at != 10);
+    assert (g_conf->mds_kill_import_at != 10);
   }
 }
 
@@ -2133,7 +2133,7 @@ void Migrator::import_logged_start(dirfrag_t df, CDir *dir, int from,
   // note state
   import_state[dir->dirfrag()] = IMPORT_ACKING;
 
-  assert (g_conf.mds_kill_import_at != 7);
+  assert (g_conf->mds_kill_import_at != 7);
 
   // force open client sessions and finish cap import
   mds->server->finish_force_open_sessions(imported_client_map, sseqmap);
@@ -2151,7 +2151,7 @@ void Migrator::import_logged_start(dirfrag_t df, CDir *dir, int from,
   //assert(dir->replica_map.size() < 2 || mds->whoami != 0);
 
   mds->send_message_mds(new MExportDirAck(dir->dirfrag()), from);
-  assert (g_conf.mds_kill_import_at != 8);
+  assert (g_conf->mds_kill_import_at != 8);
 
   cache->show_subtrees();
 }
@@ -2172,7 +2172,7 @@ void Migrator::import_finish(CDir *dir)
 
   // log finish
   mds->mdlog->start_submit_entry(new EImportFinish(dir, true));
-  assert(g_conf.mds_kill_import_at != 9);
+  assert(g_conf->mds_kill_import_at != 9);
 
   // clear updated scatterlocks
   /*
index 04a13c0b56ad9cc78812f31aef9b7cf360a160ec..80a61a43dc3bab8c9b95ee6535d2d4df1e8cbba8 100644 (file)
@@ -80,7 +80,7 @@ void Server::open_logger()
   }
 
   char name[80];
-  snprintf(name, sizeof(name), "mds.%s.server.log", g_conf.name.get_id().c_str());
+  snprintf(name, sizeof(name), "mds.%s.server.log", g_conf->name.get_id().c_str());
   logger = new ProfLogger(name, &mdserver_logtype);
   logger_add(logger);
 }
@@ -405,7 +405,7 @@ void Server::find_idle_sessions()
   //  (caps go stale, lease die)
   utime_t now = g_clock.now();
   utime_t cutoff = now;
-  cutoff -= g_conf.mds_session_timeout;  
+  cutoff -= g_conf->mds_session_timeout;  
   while (1) {
     Session *session = mds->sessionmap.get_oldest_session(Session::STATE_OPEN);
     if (!session) break;
@@ -425,7 +425,7 @@ void Server::find_idle_sessions()
 
   // autoclose
   cutoff = now;
-  cutoff -= g_conf.mds_session_autoclose;
+  cutoff -= g_conf->mds_session_autoclose;
 
   // don't kick clients if we've been laggy
   if (mds->laggy_until > cutoff) {
@@ -543,7 +543,7 @@ void Server::handle_client_reconnect(MClientReconnect *m)
     mds->clog.info() << "denied reconnect attempt (mds is "
        << ceph_mds_state_name(mds->get_state())
        << ") from " << m->get_source_inst()
-       << " after " << delay << " (allowed interval " << g_conf.mds_reconnect_timeout << ")\n";
+       << " after " << delay << " (allowed interval " << g_conf->mds_reconnect_timeout << ")\n";
     mds->messenger->send_message(new MClientSession(CEPH_SESSION_CLOSE), m->get_connection());
     m->put();
     return;
@@ -656,7 +656,7 @@ void Server::reconnect_gather_finish()
 void Server::reconnect_tick()
 {
   utime_t reconnect_end = reconnect_start;
-  reconnect_end += g_conf.mds_reconnect_timeout;
+  reconnect_end += g_conf->mds_reconnect_timeout;
   if (g_clock.now() >= reconnect_end &&
       !client_reconnect_gather.empty()) {
     dout(10) << "reconnect timed out" << dendl;
@@ -698,7 +698,7 @@ void Server::recover_filelocks(CInode *in, bufferlist locks, int64_t client)
 
 void Server::recall_client_state(float ratio)
 {
-  int max_caps_per_client = (int)(g_conf.mds_cache_size * .8);
+  int max_caps_per_client = (int)(g_conf->mds_cache_size * .8);
   int min_caps_per_client = 100;
 
   dout(10) << "recall_client_state " << ratio
@@ -778,7 +778,7 @@ void Server::reply_request(MDRequest *mdr, int r, CInode *tracei, CDentry *trace
 
 void Server::early_reply(MDRequest *mdr, CInode *tracei, CDentry *tracedn)
 {
-  if (!g_conf.mds_early_reply)
+  if (!g_conf->mds_early_reply)
     return;
 
   if (mdr->are_slaves()) {
@@ -1644,7 +1644,7 @@ CInode* Server::prepare_new_inode(MDRequest *mdr, CDir *dir, inodeno_t useino, u
     //assert(0); // just for now.
   }
     
-  int got = g_conf.mds_client_prealloc_inos - mdr->session->get_num_projected_prealloc_inos();
+  int got = g_conf->mds_client_prealloc_inos - mdr->session->get_num_projected_prealloc_inos();
   if (got > 0) {
     mds->inotable->project_alloc_ids(mdr->prealloc_inos, got);
     assert(mdr->prealloc_inos.size());  // or else fix projected increment semantics
@@ -1660,7 +1660,7 @@ CInode* Server::prepare_new_inode(MDRequest *mdr, CDir *dir, inodeno_t useino, u
 
   memset(&in->inode.dir_layout, 0, sizeof(in->inode.dir_layout));
   if (in->inode.is_dir())
-    in->inode.dir_layout.dl_dir_hash = g_conf.mds_default_dir_hash;
+    in->inode.dir_layout.dl_dir_hash = g_conf->mds_default_dir_hash;
 
   if (layout)
     in->inode.layout = *layout;
@@ -4847,7 +4847,7 @@ void Server::handle_client_rename(MDRequest *mdr)
     return;
   }
 
-  assert(g_conf.mds_kill_rename_at != 1);
+  assert(g_conf->mds_kill_rename_at != 1);
 
   // -- open all srcdn inode frags, if any --
   // we need these open so that auth can properly delegate from inode to dirfrags
@@ -4908,9 +4908,9 @@ void Server::handle_client_rename(MDRequest *mdr)
 
   // test hack: bail after slave does prepare, so we can verify it's _live_ rollback.
   if (!mdr->more()->slaves.empty() && !srci->is_dir())
-    assert(g_conf.mds_kill_rename_at != 2);
+    assert(g_conf->mds_kill_rename_at != 2);
   if (!mdr->more()->slaves.empty() && srci->is_dir())
-    assert(g_conf.mds_kill_rename_at != 3);    
+    assert(g_conf->mds_kill_rename_at != 3);    
   
   // -- prepare anchor updates -- 
   if (!linkmerge || srcdnl->is_primary()) {
@@ -4948,7 +4948,7 @@ void Server::handle_client_rename(MDRequest *mdr)
     if (anchorgather) 
       return;  // waiting for anchor prepares
 
-    assert(g_conf.mds_kill_rename_at != 4);
+    assert(g_conf->mds_kill_rename_at != 4);
   }
 
   // -- prepare journal entry --
@@ -4984,9 +4984,9 @@ void Server::_rename_finish(MDRequest *mdr, CDentry *srcdn, CDentry *destdn, CDe
   CDentry::linkage_t *destdnl = destdn->get_linkage();
   // test hack: test slave commit
   if (!mdr->more()->slaves.empty() && !destdnl->get_inode()->is_dir())
-    assert(g_conf.mds_kill_rename_at != 5);
+    assert(g_conf->mds_kill_rename_at != 5);
   if (!mdr->more()->slaves.empty() && destdnl->get_inode()->is_dir())
-    assert(g_conf.mds_kill_rename_at != 6);
+    assert(g_conf->mds_kill_rename_at != 6);
   
   // commit anchor updates?
   if (mdr->more()->src_reanchor_atid) 
index 0e66e2262e2e1c515795f5eecff6d0a21294954e..4c1758f30c5c73acc7919a9d9166ee6813c77575 100644 (file)
@@ -55,7 +55,7 @@
 
 #define DOUT_SUBSYS mds
 #undef DOUT_COND
-#define DOUT_COND(l) l<=g_conf.debug_mds || l <= g_conf.debug_mds_log || l <= g_conf.debug_mds_log_expire
+#define DOUT_COND(l) l<=g_conf->debug_mds || l <= g_conf->debug_mds_log || l <= g_conf->debug_mds_log_expire
 #undef dout_prefix
 #define dout_prefix *_dout << "mds" << mds->get_nodeid() << ".journal "
 
@@ -293,7 +293,7 @@ C_Gather *LogSegment::try_to_expire(MDS *mds)
 
 
 #undef DOUT_COND
-#define DOUT_COND(l) l<=g_conf.debug_mds || l <= g_conf.debug_mds_log
+#define DOUT_COND(l) l<=g_conf->debug_mds || l <= g_conf->debug_mds_log
 
 
 // -----------------------
@@ -1133,7 +1133,7 @@ void EFragment::replay(MDS *mds)
     break;
   }
   metablob.replay(mds, _segment);
-  if (in && g_conf.mds_debug_frag)
+  if (in && g_conf->mds_debug_frag)
     in->verify_dirfrags();
 }
 
index a88ceac4b167a49cb9aca131a944853d60f36941..da54bf07e67c87f35ad7028ff566f554c2e6ee80 100644 (file)
@@ -1036,7 +1036,7 @@ inline ostream& operator<<(ostream& out, dirfrag_load_vec_t& dl)
 {
   // ugliness!
   utime_t now = g_clock.now();
-  DecayRate rate(g_conf.mds_decay_halflife);
+  DecayRate rate(g_conf->mds_decay_halflife);
   return out << "[" << dl.vec[0].get(now, rate) << "," << dl.vec[1].get(now, rate) 
             << " " << dl.meta_load(now, rate)
             << "]";
@@ -1478,7 +1478,7 @@ protected:
     if (waiting.empty())
       get(PIN_WAITER);
     waiting.insert(pair<uint64_t,Context*>(mask, c));
-    pdout(10,g_conf.debug_mds) << (mdsco_db_line_prefix(this)) 
+    pdout(10,g_conf->debug_mds) << (mdsco_db_line_prefix(this)) 
                               << "add_waiter " << hex << mask << dec << " " << c
                               << " on " << *this
                               << dendl;
@@ -1490,14 +1490,14 @@ protected:
     while (it != waiting.end()) {
       if (it->first & mask) {
        ls.push_back(it->second);
-       pdout(10,g_conf.debug_mds) << (mdsco_db_line_prefix(this))
+       pdout(10,g_conf->debug_mds) << (mdsco_db_line_prefix(this))
                                   << "take_waiting mask " << hex << mask << dec << " took " << it->second
                                   << " tag " << hex << it->first << dec
                                   << " on " << *this
                                   << dendl;
        waiting.erase(it++);
       } else {
-       pdout(10,g_conf.debug_mds) << "take_waiting mask " << hex << mask << dec << " SKIPPING " << it->second
+       pdout(10,g_conf->debug_mds) << "take_waiting mask " << hex << mask << dec << " SKIPPING " << it->second
                                   << " tag " << hex << it->first << dec
                                   << " on " << *this 
                                   << dendl;
index b53ed01cfd939d9b75487ab676bcc9feddd11d64..2b5f70a3f73ccb193423ef2e86e397c8f9d74734 100644 (file)
@@ -94,7 +94,7 @@ void AuthMonitor::create_initial(bufferlist& bl)
   dout(10) << "create_initial -- creating initial map" << dendl;
 
   KeyRing keyring;
-  if (keyring.load(g_conf.keyring) == 0) {
+  if (keyring.load(g_conf->keyring) == 0) {
     import_keyring(keyring);
   }
 
@@ -181,7 +181,7 @@ void AuthMonitor::increase_max_global_id()
 {
   assert(mon->is_leader());
 
-  max_global_id += g_conf.mon_globalid_prealloc;
+  max_global_id += g_conf->mon_globalid_prealloc;
   dout(10) << "increasing max_global_id to " << max_global_id << dendl;
   Incremental inc;
   inc.inc_type = GLOBAL_ID;
index 12370870f57c49ae59a1ecd18372ad6ae7e41977..19845c0a77c9ae2ef7359f17173718d0bcfde9bb 100644 (file)
@@ -109,7 +109,7 @@ void Elector::reset_timer(double plus)
   // set the timer
   cancel_timer();
   expire_event = new C_ElectionExpire(this);
-  mon->timer.add_event_after(g_conf.mon_lease + plus,
+  mon->timer.add_event_after(g_conf->mon_lease + plus,
                             expire_event);
 }
 
index 3d42add093cb5cef07265f7fa72d653e47d0b344..18cc6b74dabddcb06eab76eaafc04219ab88523e 100644 (file)
@@ -55,7 +55,7 @@ void MDSMonitor::print_map(MDSMap &m, int dbl)
 
 void MDSMonitor::create_new_fs(MDSMap &m, int metadata_pool, int data_pool)
 {
-  m.max_mds = g_conf.max_mds;
+  m.max_mds = g_conf->max_mds;
   m.created = g_clock.now();
   m.data_pg_pools.push_back(data_pool);
   m.metadata_pg_pool = metadata_pool;
@@ -624,7 +624,7 @@ int MDSMonitor::fail_mds(std::ostream &ss, const std::string &arg)
     uint64_t gid = pending_mdsmap.up[w];
     if (pending_mdsmap.mds_info.count(gid)) {
       utime_t until = g_clock.now();
-      until += g_conf.mds_blacklist_interval;
+      until += g_conf->mds_blacklist_interval;
       MDSMap::mds_info_t& info = pending_mdsmap.mds_info[pending_mdsmap.up[w]];
       pending_mdsmap.last_failure_osd_epoch = mon->osdmon()->blacklist(info.addr, until);
       mon->osdmon()->propose_pending();
@@ -655,7 +655,7 @@ int MDSMonitor::cluster_fail(std::ostream &ss)
   if (pending_mdsmap.mds_info.size()) {
     // blacklist all old mds's
     utime_t until = g_clock.now();
-    until += g_conf.mds_blacklist_interval;
+    until += g_conf->mds_blacklist_interval;
     for (map<int32_t,uint64_t>::iterator p = pending_mdsmap.up.begin();
         p != pending_mdsmap.up.end();
         ++p) {
@@ -899,7 +899,7 @@ void MDSMonitor::tick()
   // check beacon timestamps
   utime_t now = g_clock.now();
   utime_t cutoff = now;
-  cutoff -= g_conf.mds_beacon_grace;
+  cutoff -= g_conf->mds_beacon_grace;
 
   // make sure last_beacon is fully populated
   for (map<uint64_t,MDSMap::mds_info_t>::iterator p = pending_mdsmap.mds_info.begin();
@@ -981,7 +981,7 @@ void MDSMonitor::tick()
            si.state == MDSMap::STATE_STARTING) {
          // blacklist laggy mds
          utime_t until = now;
-         until += g_conf.mds_blacklist_interval;
+         until += g_conf->mds_blacklist_interval;
          pending_mdsmap.last_failure_osd_epoch = mon->osdmon()->blacklist(info.addr, until);
          propose_osdmap = true;
        }
@@ -1155,7 +1155,7 @@ void MDSMonitor::do_stop()
       // BUG: hrm, if this is the case, the STOPPING guys won't be able to stop, will they?
       {
        utime_t until = g_clock.now();
-       until += g_conf.mds_blacklist_interval;
+       until += g_conf->mds_blacklist_interval;
        pending_mdsmap.last_failure_osd_epoch = mon->osdmon()->blacklist(info.addr, until);
        propose_osdmap = true;
       }
index 2fc67c1c2719ab9288b50b05b2e8f968c26c2715..02e3a0ea9ef861e0421c43db522fadbce550c7d3 100644 (file)
@@ -55,25 +55,25 @@ MonClient::~MonClient()
 int MonClient::build_initial_monmap(MonMap &monmap)
 {
   // file?
-  if (!g_conf.monmap.empty()) {
+  if (!g_conf->monmap.empty()) {
     int r;
     try {
-      r = monmap.read(g_conf.monmap.c_str());
+      r = monmap.read(g_conf->monmap.c_str());
     }
     catch (const buffer::error &e) {
       r = -EINVAL;
     }
     if (r >= 0)
       return 0;
-    cerr << "unable to read/decode monmap from " << g_conf.monmap
+    cerr << "unable to read/decode monmap from " << g_conf->monmap
         << ": " << cpp_strerror(-r) << std::endl;
     return r;
   }
 
   // -m foo?
-  if (!g_conf.mon_host.empty()) {
+  if (!g_conf->mon_host.empty()) {
     vector<entity_addr_t> addrs;
-    if (parse_ip_port_vec(g_conf.mon_host.c_str(), addrs)) {
+    if (parse_ip_port_vec(g_conf->mon_host.c_str(), addrs)) {
       for (unsigned i=0; i<addrs.size(); i++) {
        char n[2];
        n[0] = 'a' + i;
@@ -85,7 +85,7 @@ int MonClient::build_initial_monmap(MonMap &monmap)
       return 0;
     } else { //maybe they passed us a DNS-resolvable name
       char *hosts = NULL;
-      char *old_addrs = new char[g_conf.mon_host.size() + 1];
+      char *old_addrs = new char[g_conf->mon_host.size() + 1];
       hosts = resolve_addrs(old_addrs);
       delete [] old_addrs;
       if (!hosts)
@@ -104,12 +104,12 @@ int MonClient::build_initial_monmap(MonMap &monmap)
         return 0;
       } else cerr << "couldn't parse_ip_port_vec on " << hosts << std::endl;
     }
-    cerr << "unable to parse addrs in '" << g_conf.mon_host << "'" << std::endl;
+    cerr << "unable to parse addrs in '" << g_conf->mon_host << "'" << std::endl;
   }
 
   // What monitors are in the config file?
   std::vector <std::string> sections;
-  int ret = g_conf.get_all_sections(sections);
+  int ret = g_conf->get_all_sections(sections);
   if (ret) {
     cerr << "Unable to find any monitors in the configuration "
          << "file, because there was an error listing the sections. error "
@@ -135,7 +135,7 @@ int MonClient::build_initial_monmap(MonMap &monmap)
     sections.push_back("mon");
     sections.push_back("global");
     std::string val;
-    int res = g_conf.get_val_from_conf_file(sections, "mon addr", val, true);
+    int res = g_conf->get_val_from_conf_file(sections, "mon addr", val, true);
     if (res) {
       cerr << "failed to get an address for mon." << *m << ": error "
           << res << std::endl;
@@ -332,7 +332,7 @@ int MonClient::init()
   }
   rotating_secrets = new RotatingKeyRing(cct->module_type, keyring);
 
-  entity_name = g_conf.name;
+  entity_name = g_conf->name;
   
   Mutex::Locker l(monc_lock);
   timer.init();
@@ -342,7 +342,7 @@ int MonClient::init()
   srand(getpid());
 
   auth_supported.clear();
-  string str = g_conf.auth_supported;
+  string str = g_conf->auth_supported;
   list<string> sup_list;
   get_str_list(str, sup_list);
   for (list<string>::iterator iter = sup_list.begin(); iter != sup_list.end(); ++iter) {
@@ -600,9 +600,9 @@ void MonClient::tick()
 void MonClient::schedule_tick()
 {
   if (hunting)
-    timer.add_event_after(g_conf.mon_client_hunt_interval, new C_Tick(this));
+    timer.add_event_after(g_conf->mon_client_hunt_interval, new C_Tick(this));
   else
-    timer.add_event_after(g_conf.mon_client_ping_interval, new C_Tick(this));
+    timer.add_event_after(g_conf->mon_client_ping_interval, new C_Tick(this));
 }
 
 
@@ -679,7 +679,7 @@ int MonClient::_check_auth_rotating()
   }
 
   utime_t cutoff = g_clock.now();
-  cutoff -= MIN(30.0, g_conf.auth_service_ticket_ttl / 4.0);
+  cutoff -= MIN(30.0, g_conf->auth_service_ticket_ttl / 4.0);
   if (!rotating_secrets->need_new_secrets(cutoff)) {
     dout(10) << "_check_auth_rotating have uptodate secrets (they expire after " << cutoff << ")" << dendl;
     rotating_secrets->dump_rotating();
index c27bc03e7967e02751847dd295e8a51288f360a3..820e8d31f43275a5600d179d95f4eedac8774cb7 100644 (file)
@@ -331,7 +331,7 @@ void Monitor::handle_command(MMonCommand *m)
 
     if (m->cmd[0] == "_injectargs") {
       dout(0) << "parsing injected options '" << m->cmd[1] << "'" << dendl;
-      g_conf.injectargs(m->cmd[1]);
+      g_conf->injectargs(m->cmd[1]);
       return;
     } 
     if (m->cmd[0] == "class") {
@@ -655,7 +655,7 @@ bool Monitor::_ms_dispatch(Message *m)
        // set an initial timeout here, so we will trim this session even if they don't
        // do anything.
        s->until = g_clock.now();
-       s->until += g_conf.mon_subscribe_interval;
+       s->until += g_conf->mon_subscribe_interval;
       } else {
        //give it monitor caps; the peer type has been authenticated
        reuse_caps = false;
@@ -814,7 +814,7 @@ void Monitor::handle_subscribe(MMonSubscribe *m)
   }
 
   s->until = g_clock.now();
-  s->until += g_conf.mon_subscribe_interval;
+  s->until += g_conf->mon_subscribe_interval;
   for (map<string,ceph_mon_subscribe_item>::iterator p = m->what.begin();
        p != m->what.end();
        p++) {
@@ -841,7 +841,7 @@ void Monitor::handle_subscribe(MMonSubscribe *m)
   // ???
 
   if (reply)
-    messenger->send_message(new MMonSubscribeAck(monmap->get_fsid(), (int)g_conf.mon_subscribe_interval),
+    messenger->send_message(new MMonSubscribeAck(monmap->get_fsid(), (int)g_conf->mon_subscribe_interval),
                            m->get_source_inst());
 
   s->put();
@@ -935,7 +935,7 @@ public:
 void Monitor::new_tick()
 {
   C_Mon_Tick *ctx = new C_Mon_Tick(this);
-  timer.add_event_after(g_conf.mon_tick_interval, ctx);
+  timer.add_event_after(g_conf->mon_tick_interval, ctx);
 }
 
 void Monitor::tick()
index 7eedc554d1672b4864a1069fc7c4b044251b84d5..7316a7604e23f757a196cb3764595ccc7133f625 100644 (file)
@@ -91,7 +91,7 @@ int MonitorStore::mount()
     return -errno;
   }
 
-  if ((!g_conf.chdir.empty()) && (dir[0] != '/')) {
+  if ((!g_conf->chdir.empty()) && (dir[0] != '/')) {
     // combine it with the cwd, in case fuse screws things up (i.e. fakefuse)
     string old = dir;
     char cwd[PATH_MAX];
@@ -126,7 +126,7 @@ int MonitorStore::mkfs()
   }
 
   dout(0) << "created monfs at " << dir.c_str() << " for "
-         << g_conf.name.get_id() << dendl;
+         << g_conf->name.get_id() << dendl;
   return 0;
 }
 
index 6ccaeefe4acdc195dfd9d513fc519dcd754e4f8a..8b47782d64b2d757384dc31ef83ecaba940a6539 100644 (file)
@@ -489,8 +489,8 @@ bool OSDMonitor::prepare_failure(MOSDFailure *m)
                << " is adding failure report on osd" << target_osd << dendl;
     }
 
-    if ((reporters >= g_conf.osd_min_down_reporters) &&
-        (reports >= g_conf.osd_min_down_reports)) {
+    if ((reporters >= g_conf->osd_min_down_reporters) &&
+        (reports >= g_conf->osd_min_down_reports)) {
       dout(1) << "have enough reports/reporters to mark osd" << target_osd
               << " as down" << dendl;
       pending_inc.new_state[target_osd] = CEPH_OSD_UP;
@@ -999,10 +999,10 @@ void OSDMonitor::tick()
     i++;
 
     if (osdmap.is_down(o) && osdmap.is_in(o)) {
-      if (g_conf.mon_osd_down_out_interval > 0 &&
-         down.sec() >= g_conf.mon_osd_down_out_interval) {
+      if (g_conf->mon_osd_down_out_interval > 0 &&
+         down.sec() >= g_conf->mon_osd_down_out_interval) {
        dout(10) << "tick marking osd" << o << " OUT after " << down
-                << " sec (target " << g_conf.mon_osd_down_out_interval << ")" << dendl;
+                << " sec (target " << g_conf->mon_osd_down_out_interval << ")" << dendl;
        pending_inc.new_weight[o] = CEPH_OSD_OUT;
        do_propose = true;
        
@@ -1073,7 +1073,7 @@ void OSDMonitor::tick()
 void OSDMonitor::handle_osd_timeouts(const utime_t &now,
                         const std::map<int,utime_t> &last_osd_report)
 {
-  utime_t timeo(g_conf.mon_osd_report_timeout, 0);
+  utime_t timeo(g_conf->mon_osd_report_timeout, 0);
   int max_osd = osdmap.get_max_osd();
   bool new_down = false;
 
@@ -1351,14 +1351,14 @@ int OSDMonitor::prepare_new_pool(string& name, uint64_t auid, int crush_rule)
   int pool = ++pending_inc.new_pool_max;
   pending_inc.new_pools[pool].v.type = CEPH_PG_TYPE_REP;
 
-  pending_inc.new_pools[pool].v.size = g_conf.osd_pool_default_size;
+  pending_inc.new_pools[pool].v.size = g_conf->osd_pool_default_size;
   if (crush_rule >= 0)
     pending_inc.new_pools[pool].v.crush_ruleset = crush_rule;
   else
-    pending_inc.new_pools[pool].v.crush_ruleset = g_conf.osd_pool_default_crush_rule;
+    pending_inc.new_pools[pool].v.crush_ruleset = g_conf->osd_pool_default_crush_rule;
   pending_inc.new_pools[pool].v.object_hash = CEPH_STR_HASH_RJENKINS;
-  pending_inc.new_pools[pool].v.pg_num = g_conf.osd_pool_default_pg_num;
-  pending_inc.new_pools[pool].v.pgp_num = g_conf.osd_pool_default_pgp_num;
+  pending_inc.new_pools[pool].v.pg_num = g_conf->osd_pool_default_pg_num;
+  pending_inc.new_pools[pool].v.pgp_num = g_conf->osd_pool_default_pgp_num;
   pending_inc.new_pools[pool].v.lpg_num = 0;
   pending_inc.new_pools[pool].v.lpgp_num = 0;
   pending_inc.new_pools[pool].v.last_change = pending_inc.epoch;
index fc8e3e26a3ec968f4a464511ff3ecf9cb2b70768..48b3a328c7ac0b2e378f4827f6280fc421d778af 100644 (file)
@@ -236,8 +236,8 @@ public:
            last_osdmap_epoch(0), last_pg_scan(0),
            num_pg(0),
            num_osd(0),
-           full_ratio(((float)g_conf.mon_osd_full_ratio)/100),
-           nearfull_ratio(((float)g_conf.mon_osd_nearfull_ratio)/100) {}
+           full_ratio(((float)g_conf->mon_osd_full_ratio)/100),
+           nearfull_ratio(((float)g_conf->mon_osd_nearfull_ratio)/100) {}
 
   void encode(bufferlist &bl) {
     __u8 v = 2;
index eabb2455a926a66c34b64047d785eb1326a04eb9..6d854a4ee45914cb75340220ee1e3913d4242060 100644 (file)
@@ -68,12 +68,12 @@ PGMonitor::PGMonitor(Monitor *mn, Paxos *p)
   : PaxosService(mn, p)
 {
   ratio_monitor = new RatioMonitor(this);
-  g_conf.add_observer(ratio_monitor);
+  g_conf->add_observer(ratio_monitor);
 }
 
 PGMonitor::~PGMonitor()
 {
-  g_conf.remove_observer(ratio_monitor);
+  g_conf->remove_observer(ratio_monitor);
   delete ratio_monitor;
 }
 
@@ -186,7 +186,7 @@ void PGMonitor::handle_osd_timeouts()
   if (!mon->is_leader())
     return;
   utime_t now(g_clock.now());
-  utime_t timeo(g_conf.mon_osd_report_timeout, 0);
+  utime_t timeo(g_conf->mon_osd_report_timeout, 0);
   if (now - mon->get_leader_since() < timeo) {
     // We haven't been the leader for long enough to consider OSD timeouts
     return;
@@ -722,7 +722,7 @@ void PGMonitor::send_pg_creates()
 
     // throttle?
     if (last_sent_pg_create.count(osd) &&
-       now - g_conf.mon_pg_create_interval < last_sent_pg_create[osd]) 
+       now - g_conf->mon_pg_create_interval < last_sent_pg_create[osd]) 
       continue;
       
     dout(20) << "send_pg_creates  " << pgid << " -> osd" << osd 
index ec50a200f81a90ed3f94f606065fd4652222bfa4..d44a70e64f80e2c75ee1d76cfd9f7a09e74e14bc 100644 (file)
@@ -97,7 +97,7 @@ void Paxos::collect(version_t oldpn)
 
   // set timeout event
   collect_timeout_event = new C_CollectTimeout(this);
-  mon->timer.add_event_after(g_conf.mon_accept_timeout, collect_timeout_event);
+  mon->timer.add_event_after(g_conf->mon_accept_timeout, collect_timeout_event);
 }
 
 
@@ -368,7 +368,7 @@ void Paxos::begin(bufferlist& v)
 
   // set timeout event
   accept_timeout_event = new C_AcceptTimeout(this);
-  mon->timer.add_event_after(g_conf.mon_accept_timeout, accept_timeout_event);
+  mon->timer.add_event_after(g_conf->mon_accept_timeout, accept_timeout_event);
 }
 
 // peon
@@ -526,11 +526,11 @@ void Paxos::extend_lease()
   assert(is_active());
 
   lease_expire = g_clock.now();
-  lease_expire += g_conf.mon_lease;
+  lease_expire += g_conf->mon_lease;
   acked_lease.clear();
   acked_lease.insert(mon->rank);
 
-  dout(7) << "extend_lease now+" << g_conf.mon_lease << " (" << lease_expire << ")" << dendl;
+  dout(7) << "extend_lease now+" << g_conf->mon_lease << " (" << lease_expire << ")" << dendl;
 
   // bcast
   for (set<int>::const_iterator p = mon->get_quorum().begin();
@@ -548,14 +548,14 @@ void Paxos::extend_lease()
   //  if old timeout is still in place, leave it.
   if (!lease_ack_timeout_event) {
     lease_ack_timeout_event = new C_LeaseAckTimeout(this);
-    mon->timer.add_event_after(g_conf.mon_lease_ack_timeout, lease_ack_timeout_event);
+    mon->timer.add_event_after(g_conf->mon_lease_ack_timeout, lease_ack_timeout_event);
   }
 
   // set renew event
   lease_renew_event = new C_LeaseRenew(this);
   utime_t at = lease_expire;
-  at -= g_conf.mon_lease;
-  at += g_conf.mon_lease_renew_interval;
+  at -= g_conf->mon_lease;
+  at += g_conf->mon_lease_renew_interval;
   mon->timer.add_event_at(at, lease_renew_event);
 }
 
@@ -564,10 +564,10 @@ void Paxos::warn_on_future_time(utime_t t, entity_name_t from)
   utime_t now = g_clock.now();
   if (t > now) {
     utime_t diff = t - now;
-    if (diff > g_conf.mon_clock_drift_allowed) {
+    if (diff > g_conf->mon_clock_drift_allowed) {
       utime_t warn_diff = now - last_clock_drift_warn;
       if (warn_diff >
-         pow(g_conf.mon_clock_drift_warn_backoff, clock_drift_warned)) {
+         pow(g_conf->mon_clock_drift_warn_backoff, clock_drift_warned)) {
        mon->clog.warn() << "message from " << from << " was stamped " << diff
                         << "s in the future, clocks not synchronized";
        last_clock_drift_warn = g_clock.now();
@@ -612,7 +612,7 @@ void Paxos::handle_lease(MMonPaxos *lease)
   if (lease_timeout_event) 
     mon->timer.cancel_event(lease_timeout_event);
   lease_timeout_event = new C_LeaseTimeout(this);
-  mon->timer.add_event_after(g_conf.mon_lease_ack_timeout, lease_timeout_event);
+  mon->timer.add_event_after(g_conf->mon_lease_ack_timeout, lease_timeout_event);
 
   // trim?
   trim_to(lease->first_committed);
@@ -862,7 +862,7 @@ void Paxos::register_observer(entity_inst_t inst, version_t v)
   }  
 
   utime_t timeout = g_clock.now();
-  timeout += g_conf.paxos_observer_timeout;
+  timeout += g_conf->paxos_observer_timeout;
   observer->timeout = timeout;
 
   if (is_readable())
index 915e4e13f9aaefa0557950467be42ba6734ab962..451e18d5e20350f8d85327c592027812f1ee0931 100644 (file)
@@ -95,10 +95,10 @@ bool PaxosService::should_propose(double& delay)
     delay = 0.0;
   else {
     utime_t now = g_clock.now();
-    if ((now - paxos->last_commit_time) > g_conf.paxos_propose_interval)
-      delay = (double)g_conf.paxos_min_wait;
+    if ((now - paxos->last_commit_time) > g_conf->paxos_propose_interval)
+      delay = (double)g_conf->paxos_min_wait;
     else
-      delay = (double)(g_conf.paxos_propose_interval + paxos->last_commit_time
+      delay = (double)(g_conf->paxos_propose_interval + paxos->last_commit_time
                       - now);
   }
   return true;
index 687b794fdf08591f069005af14a7fd02fb2cd15e..24512e0bd104f97e8b057c6a984576e92539523c 100644 (file)
@@ -139,7 +139,7 @@ void Message::encode()
     encode_payload();
   calc_front_crc();
   
-  if (!g_conf.ms_nocrc)
+  if (!g_conf->ms_nocrc)
     calc_data_crc();
   else
     footer.flags = (unsigned)footer.flags | CEPH_MSG_FOOTER_NOCRC;
@@ -149,7 +149,7 @@ Message *decode_message(ceph_msg_header& header, ceph_msg_footer& footer,
                        bufferlist& front, bufferlist& middle, bufferlist& data)
 {
   // verify crc
-  if (!g_conf.ms_nocrc) {
+  if (!g_conf->ms_nocrc) {
     __u32 front_crc = front.crc32c(0);
     __u32 middle_crc = middle.crc32c(0);
 
@@ -509,7 +509,7 @@ Message *decode_message(ceph_msg_header& header, ceph_msg_footer& footer,
 
   default:
     dout(0) << "can't decode unknown message type " << type << " MSG_AUTH=" << CEPH_MSG_AUTH << dendl;
-    if (g_conf.ms_die_on_bad_msg)
+    if (g_conf->ms_die_on_bad_msg)
       assert(0);
     return 0;
   }
@@ -527,7 +527,7 @@ Message *decode_message(ceph_msg_header& header, ceph_msg_footer& footer,
     dout(0) << "failed to decode message of type " << type
            << " v" << header.version
            << ": " << e.what() << dendl;
-    if (g_conf.ms_die_on_bad_msg)
+    if (g_conf->ms_die_on_bad_msg)
       assert(0);
     return 0;
   }
index a27ae6144e7c71056004466088d70dcb98240266..b4c780c2e5962982b2095b5a1f716915ea281eec 100644 (file)
@@ -58,7 +58,7 @@ int SimpleMessenger::Accepter::bind(uint64_t nonce, entity_addr_t &bind_addr, in
   // bind to a socket
   dout(10) << "accepter.bind" << dendl;
   
-  int family = g_conf.ms_bind_ipv6 ? AF_INET6 : AF_INET;
+  int family = g_conf->ms_bind_ipv6 ? AF_INET6 : AF_INET;
   switch (bind_addr.get_family()) {
   case AF_INET:
   case AF_INET6:
@@ -216,7 +216,7 @@ void *SimpleMessenger::Accepter::entry()
       dout(10) << "accepted incoming on sd " << sd << dendl;
       
       // disable Nagle algorithm?
-      if (g_conf.ms_tcp_nodelay) {
+      if (g_conf->ms_tcp_nodelay) {
        int flag = 1;
        int r = ::setsockopt(sd, IPPROTO_TCP, TCP_NODELAY, (char*)&flag, sizeof(flag));
        if (r < 0)
@@ -1022,7 +1022,7 @@ int SimpleMessenger::Pipe::connect()
   }
 
   // disable Nagle algorithm?
-  if (g_conf.ms_tcp_nodelay) {
+  if (g_conf->ms_tcp_nodelay) {
     int flag = 1;
     int r = ::setsockopt(sd, IPPROTO_TCP, TCP_NODELAY, (char*)&flag, sizeof(flag));
     if (r < 0) 
@@ -1454,13 +1454,13 @@ void SimpleMessenger::Pipe::fault(bool onconnect, bool onread)
   } else if (backoff == utime_t()) {
     if (!onconnect)
       dout(0) << "fault first fault" << dendl;
-    backoff.set_from_double(g_conf.ms_initial_backoff);
+    backoff.set_from_double(g_conf->ms_initial_backoff);
   } else {
     dout(10) << "fault waiting " << backoff << dendl;
     cond.WaitInterval(pipe_lock, backoff);
     backoff += backoff;
-    if (backoff > g_conf.ms_max_backoff)
-      backoff.set_from_double(g_conf.ms_max_backoff);
+    if (backoff > g_conf->ms_max_backoff)
+      backoff.set_from_double(g_conf->ms_max_backoff);
     dout(10) << "fault done waiting or woke up" << dendl;
   }
 }
index 228ff7321ed629125f92461a9cc7bb631268f3d0..2d165c22defd190964aa4474ad14734ac5ce34ec 100644 (file)
@@ -227,7 +227,7 @@ private:
       out_seq(0), in_seq(0), in_seq_acked(0),
       reader_thread(this), writer_thread(this) {
       connection_state->pipe = get();
-      messenger->timeout = g_conf.ms_tcp_read_timeout * 1000; //convert to ms
+      messenger->timeout = g_conf->ms_tcp_read_timeout * 1000; //convert to ms
       if (messenger->timeout == 0)
         messenger->timeout = -1;
     }
@@ -249,13 +249,13 @@ private:
       assert(pipe_lock.is_locked());
       assert(!reader_running);
       reader_running = true;
-      reader_thread.create(g_conf.ms_rwthread_stack_bytes);
+      reader_thread.create(g_conf->ms_rwthread_stack_bytes);
     }
     void start_writer() {
       assert(pipe_lock.is_locked());
       assert(!writer_running);
       writer_running = true;
-      writer_thread.create(g_conf.ms_rwthread_stack_bytes);
+      writer_thread.create(g_conf->ms_rwthread_stack_bytes);
     }
     void join_reader() {
       if (!reader_running)
@@ -557,7 +557,7 @@ public:
     Messenger(entity_name_t()),
     accepter(this),
     lock("SimpleMessenger::lock"), started(false), did_bind(false),
-    dispatch_throttler(g_conf.ms_dispatch_throttle_bytes), need_addr(true),
+    dispatch_throttler(g_conf->ms_dispatch_throttle_bytes), need_addr(true),
     destination_stopped(true), my_type(-1),
     global_seq_lock("SimpleMessenger::global_seq_lock"), global_seq(0),
     reaper_thread(this), reaper_started(false), reaper_stop(false), 
@@ -573,7 +573,7 @@ public:
 
   int bind(entity_addr_t bind_addr, int64_t nonce);
   int bind(uint64_t nonce) {
-    return bind(g_conf.public_addr, nonce);
+    return bind(g_conf->public_addr, nonce);
   }
   int start_with_nonce(uint64_t nonce);  // if we didn't bind
   int start() {                 // if we did
index aa9c21f177b2f0ab9c9ed08c5f7569db89785841..275ab18dbf1d6977d9f2b765868ba0b3ad470eee 100644 (file)
@@ -15,8 +15,8 @@ int tcp_read(int sd, char *buf, int len, int timeout)
 
   while (len > 0) {
 
-    if (g_conf.ms_inject_socket_failures && sd >= 0) {
-      if (rand() % g_conf.ms_inject_socket_failures == 0) {
+    if (g_conf->ms_inject_socket_failures && sd >= 0) {
+      if (rand() % g_conf->ms_inject_socket_failures == 0) {
        generic_dout(0) << "injecting socket failure" << dendl;
        ::shutdown(sd, SHUT_RDWR);
       }
@@ -92,8 +92,8 @@ int tcp_write(int sd, const char *buf, int len)
   pfd.fd = sd;
   pfd.events = POLLOUT | POLLHUP | POLLRDHUP | POLLNVAL | POLLERR;
 
-  if (g_conf.ms_inject_socket_failures && sd >= 0) {
-    if (rand() % g_conf.ms_inject_socket_failures == 0) {
+  if (g_conf->ms_inject_socket_failures && sd >= 0) {
+    if (rand() % g_conf->ms_inject_socket_failures == 0) {
       generic_dout(0) << "injecting socket failure" << dendl;
       ::shutdown(sd, SHUT_RDWR);
     }
index 6fc132cf4dcc8f75a09e0f10fa6930b3e5ae94fc..ad8852dee8451a1d7a20040d36947f395d15b16e 100644 (file)
@@ -122,7 +122,7 @@ int FileJournal::_open_block_device()
     return -EINVAL;
   }
 
-  int64_t conf_journal_sz(g_conf.osd_journal_size);
+  int64_t conf_journal_sz(g_conf->osd_journal_size);
   conf_journal_sz <<= 20;
   if (bdev_sz < conf_journal_sz) {
     dout(0) << __func__ << ": you have configured a journal of size "
@@ -265,10 +265,10 @@ int FileJournal::_open_file(int64_t oldsize, blksize_t blksize,
                            bool create)
 {
   int ret;
-  int64_t conf_journal_sz(g_conf.osd_journal_size);
+  int64_t conf_journal_sz(g_conf->osd_journal_size);
   conf_journal_sz <<= 20;
 
-  if ((g_conf.osd_journal_size == 0) && (oldsize < ONE_MEG)) {
+  if ((g_conf->osd_journal_size == 0) && (oldsize < ONE_MEG)) {
     derr << "I'm sorry, I don't know how large of a journal to create."
         << "Please specify a block device to use as the journal OR "
         << "set osd_journal_size in your ceph.conf" << dendl;
@@ -276,7 +276,7 @@ int FileJournal::_open_file(int64_t oldsize, blksize_t blksize,
   }
 
   if (create && (oldsize < conf_journal_sz)) {
-    uint64_t newsize(g_conf.osd_journal_size);
+    uint64_t newsize(g_conf->osd_journal_size);
     newsize <<= 20;
     dout(10) << "_open extending to " << newsize << " bytes" << dendl;
     ret = ::ftruncate(fd, newsize);
@@ -317,7 +317,7 @@ int FileJournal::create()
   header.fsid = fsid;
   header.max_size = max_size;
   header.block_size = block_size;
-  if (g_conf.journal_block_align || directio)
+  if (g_conf->journal_block_align || directio)
     header.alignment = block_size;
   else
     header.alignment = 16;  // at least stay word aligned on 64bit machines...
@@ -347,7 +347,7 @@ int FileJournal::create()
     goto free_buf;
   }
 
-  needed_space = g_conf.osd_max_write_size << 20;
+  needed_space = g_conf->osd_max_write_size << 20;
   needed_space += (2 * sizeof(entry_header_t)) + get_top();
   if (header.max_size - header.start < needed_space) {
     derr << "FileJournal::create: OSD journal is not large enough to hold "
@@ -579,8 +579,8 @@ int FileJournal::prepare_multi_write(bufferlist& bl, uint64_t& orig_ops, uint64_
   // gather queued writes
   off64_t queue_pos = write_pos;
 
-  int eleft = g_conf.journal_max_write_entries;
-  unsigned bmax = g_conf.journal_max_write_bytes;
+  int eleft = g_conf->journal_max_write_entries;
+  unsigned bmax = g_conf->journal_max_write_bytes;
 
   if (full_state != FULL_NOTFULL)
     return -ENOSPC;
@@ -610,13 +610,13 @@ int FileJournal::prepare_multi_write(bufferlist& bl, uint64_t& orig_ops, uint64_
 
     if (eleft) {
       if (--eleft == 0) {
-       dout(20) << "prepare_multi_write hit max events per write " << g_conf.journal_max_write_entries << dendl;
+       dout(20) << "prepare_multi_write hit max events per write " << g_conf->journal_max_write_entries << dendl;
        break;
       }
     }
     if (bmax) {
       if (bl.length() >= bmax) {
-       dout(20) << "prepare_multi_write hit max write size " << g_conf.journal_max_write_bytes << dendl;
+       dout(20) << "prepare_multi_write hit max write size " << g_conf->journal_max_write_bytes << dendl;
        break;
       }
     }
@@ -1160,8 +1160,8 @@ bool FileJournal::read_entry(bufferlist& bl, uint64_t& seq)
 
 void FileJournal::throttle()
 {
-  if (throttle_ops.wait(g_conf.journal_queue_max_ops))
+  if (throttle_ops.wait(g_conf->journal_queue_max_ops))
     dout(1) << "throttle: waited for ops" << dendl;
-  if (throttle_bytes.wait(g_conf.journal_queue_max_bytes))
+  if (throttle_bytes.wait(g_conf->journal_queue_max_bytes))
     dout(1) << "throttle: waited for bytes" << dendl;
 }
index 33ebcef23455d3f6ad7fef27c41a1485167ebc8c..fab4d3589e0963e9c1ea8356a238fa5bbab81c4f 100644 (file)
@@ -869,7 +869,7 @@ FileStore::FileStore(const std::string &base, const std::string &jdev) :
   timer(sync_entry_timeo_lock),
   stop(false), sync_thread(this),
   op_queue_len(0), op_queue_bytes(0), next_finish(0),
-  op_tp("FileStore::op_tp", g_conf.filestore_op_threads), op_wq(this, &op_tp),
+  op_tp("FileStore::op_tp", g_conf->filestore_op_threads), op_wq(this, &op_tp),
   flusher_queue_len(0), flusher_thread(this),
   logger(NULL)
 {
@@ -956,7 +956,7 @@ int FileStore::open_journal()
 {
   if (journalpath.length()) {
     dout(10) << "open_journal at " << journalpath << dendl;
-    journal = new FileJournal(fsid, &finisher, &sync_cond, journalpath.c_str(), g_conf.journal_dio);
+    journal = new FileJournal(fsid, &finisher, &sync_cond, journalpath.c_str(), g_conf->journal_dio);
   }
   return 0;
 }
@@ -1021,12 +1021,12 @@ int FileStore::mkfs()
   int basedir_fd;
   struct btrfs_ioctl_vol_args volargs;
 
-  if (!g_conf.filestore_dev.empty()) {
+  if (!g_conf->filestore_dev.empty()) {
     dout(0) << "mounting" << dendl;
-    ret = run_cmd("mount", g_conf.filestore_dev.c_str(), (char*)NULL);
+    ret = run_cmd("mount", g_conf->filestore_dev.c_str(), (char*)NULL);
     if (ret) {
-      derr << "FileStore::mkfs: failed to mount g_conf.filestore_dev "
-          << "'" << g_conf.filestore_dev << "'. Error code " << ret << dendl;
+      derr << "FileStore::mkfs: failed to mount g_conf->filestore_dev "
+          << "'" << g_conf->filestore_dev << "'. Error code " << ret << dendl;
       goto out;
     }
   }
@@ -1151,9 +1151,9 @@ int FileStore::mkfs()
   if (ret)
     goto close_basedir_fd;
 
-  if (!g_conf.filestore_dev.empty()) {
+  if (!g_conf->filestore_dev.empty()) {
     dout(0) << "umounting" << dendl;
-    snprintf(buf, sizeof(buf), "umount %s", g_conf.filestore_dev.c_str());
+    snprintf(buf, sizeof(buf), "umount %s", g_conf->filestore_dev.c_str());
     //system(cmd);
   }
 
@@ -1253,13 +1253,13 @@ int FileStore::_detect_fs()
   char buf[80];
   
   // fake collections?
-  if (g_conf.filestore_fake_collections) {
+  if (g_conf->filestore_fake_collections) {
     dout(0) << "faking collections (in memory)" << dendl;
     fake_collections = true;
   }
 
   // xattrs?
-  if (g_conf.filestore_fake_attrs) {
+  if (g_conf->filestore_fake_attrs) {
     dout(0) << "faking xattrs (in memory)" << dendl;
     fake_attrs = true;
   } else {
@@ -1306,7 +1306,7 @@ int FileStore::_detect_fs()
     btrfs = true;
 
     // clone_range?
-    if (g_conf.filestore_btrfs_clone_range) {
+    if (g_conf->filestore_btrfs_clone_range) {
       btrfs_clone_range = true;
       int r = _do_clone_range(fsid_fd, -1, 0, 1);
       if (r == -EBADF) {
@@ -1339,14 +1339,14 @@ int FileStore::_detect_fs()
       dout(0) << "mount btrfs SNAP_CREATE failed: " << strerror_r(-r, buf, sizeof(buf)) << dendl;
     }
 
-    if (g_conf.filestore_btrfs_snap && !btrfs_snap_destroy) {
+    if (g_conf->filestore_btrfs_snap && !btrfs_snap_destroy) {
       dout(0) << "mount btrfs snaps enabled, but no SNAP_DESTROY ioctl (from kernel 2.6.32+)" << dendl;
       cerr << TEXT_YELLOW
           << " ** WARNING: 'filestore btrfs snap' was enabled (for safe transactions, rollback),\n"
           << "             but btrfs does not support the SNAP_DESTROY ioctl (added in\n"
           << "             Linux 2.6.32).  Disabling.\n"
           << TEXT_NORMAL;
-      g_conf.filestore_btrfs_snap = false;
+      g_conf->filestore_btrfs_snap = false;
     }
 
     // start_sync?
@@ -1405,7 +1405,7 @@ int FileStore::_detect_fs()
       }
     }
 
-    if (g_conf.filestore_btrfs_snap && !btrfs_snap_create_v2) {
+    if (g_conf->filestore_btrfs_snap && !btrfs_snap_create_v2) {
       dout(0) << "mount WARNING: btrfs snaps enabled, but no SNAP_CREATE_V2 ioctl (from kernel 2.6.37+)" << dendl;
       cerr << TEXT_YELLOW
           << " ** WARNING: 'filestore btrfs snap' is enabled (for safe transactions,\n"         
@@ -1427,9 +1427,9 @@ int FileStore::_sanity_check_fs()
 {
   // sanity check(s)
 
-  if ((int)g_conf.filestore_journal_writeahead +
-      (int)g_conf.filestore_journal_parallel +
-      (int)g_conf.filestore_journal_trailing > 1) {
+  if ((int)g_conf->filestore_journal_writeahead +
+      (int)g_conf->filestore_journal_parallel +
+      (int)g_conf->filestore_journal_trailing > 1) {
     dout(0) << "mount ERROR: more than one of filestore journal {writeahead,parallel,trailing} enabled" << dendl;
     cerr << TEXT_RED 
         << " ** WARNING: more than one of 'filestore journal {writeahead,parallel,trailing}'\n"
@@ -1439,7 +1439,7 @@ int FileStore::_sanity_check_fs()
   }
 
   if (!btrfs) {
-    if (!journal || !g_conf.filestore_journal_writeahead) {
+    if (!journal || !g_conf->filestore_journal_writeahead) {
       dout(0) << "mount WARNING: no btrfs, and no journal in writeahead mode; data may be lost" << dendl;
       cerr << TEXT_RED 
           << " ** WARNING: no btrfs AND (no journal OR journal not in writeahead mode)\n"
@@ -1513,9 +1513,9 @@ int FileStore::mount()
   uint64_t initial_op_seq;
   set<string> cluster_snaps;
 
-  if (!g_conf.filestore_dev.empty()) {
+  if (!g_conf->filestore_dev.empty()) {
     dout(0) << "mounting" << dendl;
-    //run_cmd("mount", g_conf.filestore_dev, (char*)NULL);
+    //run_cmd("mount", g_conf->filestore_dev, (char*)NULL);
   }
 
   dout(5) << "basedir " << basedir << " journal " << journalpath << dendl;
@@ -1603,14 +1603,14 @@ int FileStore::mount()
       dout(0) << "mount found cluster snaps " << cluster_snaps << dendl;
   }
 
-  if (g_conf.osd_rollback_to_cluster_snap.length() &&
-      cluster_snaps.count(g_conf.osd_rollback_to_cluster_snap) == 0) {
-    derr << "rollback to cluster snapshot '" << g_conf.osd_rollback_to_cluster_snap << "': not found" << dendl;
+  if (g_conf->osd_rollback_to_cluster_snap.length() &&
+      cluster_snaps.count(g_conf->osd_rollback_to_cluster_snap) == 0) {
+    derr << "rollback to cluster snapshot '" << g_conf->osd_rollback_to_cluster_snap << "': not found" << dendl;
     ret = -ENOENT;
     goto close_basedir_fd;
   }
 
-  if (btrfs && g_conf.filestore_btrfs_snap) {
+  if (btrfs && g_conf->filestore_btrfs_snap) {
     if (snaps.empty()) {
       dout(0) << "mount WARNING: no consistent snaps found, store may be in inconsistent state" << dendl;
     } else if (!btrfs) {
@@ -1618,14 +1618,14 @@ int FileStore::mount()
     } else {
       char s[PATH_MAX];
 
-      if (g_conf.osd_rollback_to_cluster_snap.length()) {
+      if (g_conf->osd_rollback_to_cluster_snap.length()) {
        derr << TEXT_RED
-            << " ** NOTE: rolling back to cluster snapshot " << g_conf.osd_rollback_to_cluster_snap << " **"
+            << " ** NOTE: rolling back to cluster snapshot " << g_conf->osd_rollback_to_cluster_snap << " **"
             << TEXT_NORMAL
             << dendl;
-       assert(cluster_snaps.count(g_conf.osd_rollback_to_cluster_snap));
+       assert(cluster_snaps.count(g_conf->osd_rollback_to_cluster_snap));
        snprintf(s, sizeof(s), "%s/" CLUSTER_SNAP_ITEM, basedir.c_str(),
-                g_conf.osd_rollback_to_cluster_snap.c_str());
+                g_conf->osd_rollback_to_cluster_snap.c_str());
       } else {
        uint64_t curr_seq;
        {
@@ -1639,7 +1639,7 @@ int FileStore::mount()
        dout(10) << " most recent snap from " << snaps << " is " << cp << dendl;
        
        if (cp != curr_seq) {
-         if (!g_conf.osd_use_stale_snap) { 
+         if (!g_conf->osd_use_stale_snap) { 
            derr << TEXT_RED
                 << " ** ERROR: current volume data version is not equal to snapshotted version\n"
                 << "           which can lead to data inconsistency. \n"
@@ -1723,31 +1723,31 @@ int FileStore::mount()
 
   // select journal mode?
   if (journal) {
-    if (!g_conf.filestore_journal_writeahead &&
-       !g_conf.filestore_journal_parallel &&
-       !g_conf.filestore_journal_trailing) {
+    if (!g_conf->filestore_journal_writeahead &&
+       !g_conf->filestore_journal_parallel &&
+       !g_conf->filestore_journal_trailing) {
       if (!btrfs) {
-       g_conf.filestore_journal_writeahead = true;
+       g_conf->filestore_journal_writeahead = true;
        dout(0) << "mount: enabling WRITEAHEAD journal mode: btrfs not detected" << dendl;
-      } else if (!g_conf.filestore_btrfs_snap) {
-       g_conf.filestore_journal_writeahead = true;
+      } else if (!g_conf->filestore_btrfs_snap) {
+       g_conf->filestore_journal_writeahead = true;
        dout(0) << "mount: enabling WRITEAHEAD journal mode: 'filestore btrfs snap' mode is not enabled" << dendl;
       } else if (!btrfs_snap_create_v2) {
-       g_conf.filestore_journal_writeahead = true;
+       g_conf->filestore_journal_writeahead = true;
        dout(0) << "mount: enabling WRITEAHEAD journal mode: btrfs SNAP_CREATE_V2 ioctl not detected (v2.6.37+)" << dendl;
       } else {
-       g_conf.filestore_journal_parallel = true;
+       g_conf->filestore_journal_parallel = true;
        dout(0) << "mount: enabling PARALLEL journal mode: btrfs, SNAP_CREATE_V2 detected and 'filestore btrfs snap' mode is enabled" << dendl;
       }
     } else {
-      if (g_conf.filestore_journal_writeahead)
+      if (g_conf->filestore_journal_writeahead)
        dout(0) << "mount: WRITEAHEAD journal mode explicitly enabled in conf" << dendl;
-      if (g_conf.filestore_journal_parallel)
+      if (g_conf->filestore_journal_parallel)
        dout(0) << "mount: PARALLEL journal mode explicitly enabled in conf" << dendl;
-      if (g_conf.filestore_journal_trailing)
+      if (g_conf->filestore_journal_trailing)
        dout(0) << "mount: TRAILING journal mode explicitly enabled in conf" << dendl;
     }
-    if (g_conf.filestore_journal_writeahead)
+    if (g_conf->filestore_journal_writeahead)
       journal->set_wait_on_full(true);
   }
 
@@ -1834,9 +1834,9 @@ int FileStore::umount()
     basedir_fd = -1;
   }
 
-  if (!g_conf.filestore_dev.empty()) {
+  if (!g_conf->filestore_dev.empty()) {
     dout(0) << "umounting" << dendl;
-    //run_cmd("umount", g_conf.filestore_dev, (char*)NULL);
+    //run_cmd("umount", g_conf->filestore_dev, (char*)NULL);
   }
 
   {
@@ -1986,12 +1986,12 @@ void FileStore::op_queue_reserve_throttle(Op *o)
 void FileStore::_op_queue_reserve_throttle(Op *o, const char *caller)
 {
   // Do not call while holding the journal lock!
-  uint64_t max_ops = g_conf.filestore_queue_max_ops;
-  uint64_t max_bytes = g_conf.filestore_queue_max_bytes;
+  uint64_t max_ops = g_conf->filestore_queue_max_ops;
+  uint64_t max_bytes = g_conf->filestore_queue_max_bytes;
 
   if (is_committing()) {
-    max_ops += g_conf.filestore_queue_committing_max_ops;
-    max_bytes += g_conf.filestore_queue_committing_max_bytes;
+    max_ops += g_conf->filestore_queue_committing_max_ops;
+    max_bytes += g_conf->filestore_queue_committing_max_bytes;
   }
 
   if (logger) {
@@ -2127,19 +2127,19 @@ int FileStore::queue_transactions(Sequencer *posr, list<Transaction*> &tls,
     //logger->inc(l_os_in_bytes, 1); 
   }
 
-  if (journal && journal->is_writeable() && !g_conf.filestore_journal_trailing) {
+  if (journal && journal->is_writeable() && !g_conf->filestore_journal_trailing) {
     Op *o = build_op(tls, onreadable, onreadable_sync);
     op_queue_reserve_throttle(o);
     journal->throttle();
     o->op = op_submit_start();
-    if (g_conf.filestore_journal_parallel) {
+    if (g_conf->filestore_journal_parallel) {
       dout(5) << "queue_transactions (parallel) " << o->op << " " << o->tls << dendl;
       
       _op_journal_transactions(o->tls, o->op, ondisk);
       
       // queue inside journal lock, to preserve ordering
       queue_op(osr, o);
-    } else if (g_conf.filestore_journal_writeahead) {
+    } else if (g_conf->filestore_journal_writeahead) {
       dout(5) << "queue_transactions (writeahead) " << o->op << " " << o->tls << dendl;
       
       osr->queue_journal(o->op);
@@ -2269,7 +2269,7 @@ int FileStore::_transaction_start(uint64_t bytes, uint64_t ops)
   return 0;
 #else
   if (!btrfs || !btrfs_trans_start_end ||
-      !g_conf.filestore_btrfs_trans)
+      !g_conf->filestore_btrfs_trans)
     return 0;
 
   char buf[80];
@@ -2303,7 +2303,7 @@ void FileStore::_transaction_finish(int fd)
   return;
 #else
   if (!btrfs || !btrfs_trans_start_end ||
-      !g_conf.filestore_btrfs_trans)
+      !g_conf->filestore_btrfs_trans)
     return;
 
   char fn[PATH_MAX];
@@ -2746,9 +2746,9 @@ int FileStore::_write(coll_t cid, const sobject_t& oid,
 
   // flush?
 #ifdef HAVE_SYNC_FILE_RANGE
-  if (!g_conf.filestore_flusher ||
+  if (!g_conf->filestore_flusher ||
       !queue_flusher(fd, offset, len)) {
-    if (g_conf.filestore_sync_flush)
+    if (g_conf->filestore_sync_flush)
       ::sync_file_range(fd, offset, len, SYNC_FILE_RANGE_WRITE);
     ::close(fd);
   }
@@ -2896,7 +2896,7 @@ bool FileStore::queue_flusher(int fd, uint64_t off, uint64_t len)
 {
   bool queued;
   lock.Lock();
-  if (flusher_queue_len < g_conf.filestore_flusher_max_fds) {
+  if (flusher_queue_len < g_conf->filestore_flusher_max_fds) {
     flusher_queue.push_back(sync_epoch);
     flusher_queue.push_back(fd);
     flusher_queue.push_back(off);
@@ -2910,7 +2910,7 @@ bool FileStore::queue_flusher(int fd, uint64_t off, uint64_t len)
   } else {
     dout(10) << "queue_flusher ep " << sync_epoch << " fd " << fd << " " << off << "~" << len
             << " qlen " << flusher_queue_len 
-            << " hit flusher_max_fds " << g_conf.filestore_flusher_max_fds
+            << " hit flusher_max_fds " << g_conf->filestore_flusher_max_fds
             << ", skipping async flush" << dendl;
     queued = false;
   }
@@ -2970,7 +2970,7 @@ public:
   void finish(int r) {
     BackTrace *bt = new BackTrace(1);
     generic_dout(-1) << "FileStore: sync_entry timed out after "
-          << g_conf.filestore_commit_timeout << " seconds.\n";
+          << g_conf->filestore_commit_timeout << " seconds.\n";
     bt->print(*_dout);
     *_dout << dendl;
     delete bt;
@@ -2983,9 +2983,9 @@ void FileStore::sync_entry()
   lock.Lock();
   while (!stop) {
     utime_t max_interval;
-    max_interval.set_from_double(g_conf.filestore_max_sync_interval);
+    max_interval.set_from_double(g_conf->filestore_max_sync_interval);
     utime_t min_interval;
-    min_interval.set_from_double(g_conf.filestore_min_sync_interval);
+    min_interval.set_from_double(g_conf->filestore_min_sync_interval);
 
     utime_t startwait = g_clock.now();
     if (!force_sync) {
@@ -3023,7 +3023,7 @@ void FileStore::sync_entry()
 
       SyncEntryTimeout *sync_entry_timeo = new SyncEntryTimeout();
       sync_entry_timeo_lock.Lock();
-      timer.add_event_after(g_conf.filestore_commit_timeout, sync_entry_timeo);
+      timer.add_event_after(g_conf->filestore_commit_timeout, sync_entry_timeo);
       sync_entry_timeo_lock.Unlock();
 
       if (logger)
@@ -3035,7 +3035,7 @@ void FileStore::sync_entry()
       dout(15) << "sync_entry committing " << cp << " sync_epoch " << sync_epoch << dendl;
       write_op_seq(op_fd, cp);
 
-      bool do_snap = btrfs && g_conf.filestore_btrfs_snap;
+      bool do_snap = btrfs && g_conf->filestore_btrfs_snap;
 
       if (do_snap) {
 
@@ -3087,7 +3087,7 @@ void FileStore::sync_entry()
          dout(15) << "sync_entry doing btrfs SYNC" << dendl;
          // do a full btrfs commit
          ::ioctl(op_fd, BTRFS_IOC_SYNC);
-       } else if (g_conf.filestore_fsync_flushes_journal_data) {
+       } else if (g_conf->filestore_fsync_flushes_journal_data) {
          dout(15) << "sync_entry doing fsync on " << current_op_seq_fn << dendl;
          // make the file system's journal commit.
          //  this works with ext3, but NOT ext4
@@ -3205,7 +3205,7 @@ void FileStore::flush()
 {
   dout(10) << "flush" << dendl;
  
-  if (g_conf.filestore_journal_writeahead) {
+  if (g_conf->filestore_journal_writeahead) {
     if (journal)
       journal->flush();
     dout(10) << "flush draining ondisk finisher" << dendl;
@@ -3223,11 +3223,11 @@ void FileStore::sync_and_flush()
 {
   dout(10) << "sync_and_flush" << dendl;
 
-  if (g_conf.filestore_journal_writeahead) {
+  if (g_conf->filestore_journal_writeahead) {
     if (journal)
       journal->flush();
     _flush_op_queue();
-  } else if (g_conf.filestore_journal_parallel) {
+  } else if (g_conf->filestore_journal_parallel) {
     _flush_op_queue();
     sync();
   } else {
index 22dc1620b06c0807391d4f82500352770d94ebc8..2041f5e1ae2cd2648191b562c80046764da74f76 100644 (file)
@@ -251,7 +251,7 @@ void JournalingObjectStore::_op_journal_transactions(list<ObjectStore::Transacti
     for (list<ObjectStore::Transaction*>::iterator p = tls.begin(); p != tls.end(); p++) {
       ObjectStore::Transaction *t = *p;
       if (t->get_data_length() > data_len &&
-         (int)t->get_data_length() >= g_conf.journal_align_min_size) {
+         (int)t->get_data_length() >= g_conf->journal_align_min_size) {
        data_len = t->get_data_length();
        data_align = (t->get_data_alignment() - tbl.length()) & ~PAGE_MASK;
       }
index c644db6c5651be0cbb382f3803ec1d6f9c0c533e..33e4454c4be813cacf34d420d23fae73959852c0 100644 (file)
@@ -53,7 +53,7 @@ int ClassHandler::_load_class(ClassData *cls)
       cls->status == ClassData::CLASS_MISSING) {
     char fname[PATH_MAX];
     snprintf(fname, sizeof(fname), "%s/libcls_%s.so",
-            g_conf.osd_class_dir.c_str(),
+            g_conf->osd_class_dir.c_str(),
             cls->name.c_str());
     dout(10) << "_load_class " << cls->name << " from " << fname << dendl;
 
index 07828a83c514b009f4ccf7e4dab25f365d32d91b..861eead1ebe8eb2abbca4fd1a79956e9d3fd0433 100644 (file)
@@ -132,7 +132,7 @@ create_object_store(const std::string &dev, const std::string &jdev)
   if (::stat(dev.c_str(), &st) != 0)
     return 0;
 
-  if (g_conf.filestore)
+  if (g_conf->filestore)
     return new FileStore(dev, jdev);
 
   if (S_ISDIR(st.st_mode))
@@ -175,20 +175,20 @@ int OSD::mkfs(const std::string &dev, const std::string &jdev, ceph_fsid_t fsid,
     }
 
     // age?
-    if (g_conf.osd_age_time != 0) {
-      if (g_conf.osd_age_time >= 0) {
+    if (g_conf->osd_age_time != 0) {
+      if (g_conf->osd_age_time >= 0) {
        dout(0) << "aging..." << dendl;
        Ager ager(store);
-       ager.age(g_conf.osd_age_time,
-                g_conf.osd_age,
-                g_conf.osd_age - .05,
+       ager.age(g_conf->osd_age_time,
+                g_conf->osd_age,
+                g_conf->osd_age - .05,
                 50000,
-                g_conf.osd_age - .05);
+                g_conf->osd_age - .05);
       }
     }
 
     // benchmark?
-    if (g_conf.osd_auto_weight) {
+    if (g_conf->osd_auto_weight) {
       bufferlist bl;
       bufferptr bp(1048576);
       bp.zero();
@@ -416,9 +416,9 @@ OSD::OSD(int id, Messenger *internal_messenger, Messenger *external_messenger,
             ceph_osd_feature_ro_compat,
             ceph_osd_feature_incompat),
   state(STATE_BOOTING), boot_epoch(0), up_epoch(0),
-  op_tp("OSD::op_tp", g_conf.osd_op_threads),
-  recovery_tp("OSD::recovery_tp", g_conf.osd_recovery_threads),
-  disk_tp("OSD::disk_tp", g_conf.osd_disk_threads),
+  op_tp("OSD::op_tp", g_conf->osd_op_threads),
+  recovery_tp("OSD::recovery_tp", g_conf->osd_recovery_threads),
+  disk_tp("OSD::disk_tp", g_conf->osd_disk_threads),
   heartbeat_lock("OSD::heartbeat_lock"),
   heartbeat_stop(false), heartbeat_epoch(0),
   heartbeat_messenger(hbm),
@@ -427,9 +427,9 @@ OSD::OSD(int id, Messenger *internal_messenger, Messenger *external_messenger,
   decayrate(5.0),
   stat_oprate(),
   peer_stat_lock("OSD::peer_stat_lock"),
-  read_latency_calc(g_conf.osd_max_opq<1 ? 1:g_conf.osd_max_opq),
+  read_latency_calc(g_conf->osd_max_opq<1 ? 1:g_conf->osd_max_opq),
   qlen_calc(3),
-  iat_averager(g_conf.osd_flash_crowd_iat_alpha),
+  iat_averager(g_conf->osd_flash_crowd_iat_alpha),
   finished_lock("OSD::finished_lock"),
   op_wq(this, &op_tp),
   osdmap(NULL),
@@ -611,7 +611,7 @@ int OSD::init()
   heartbeat_thread.create();
 
   // tick
-  timer.add_event_after(g_conf.osd_heartbeat_interval, new C_Tick(this));
+  timer.add_event_after(g_conf->osd_heartbeat_interval, new C_Tick(this));
 
   if (false) {
     signal(SIGTERM, handle_signal);
@@ -709,10 +709,10 @@ void OSD::start_logger()
 
 int OSD::shutdown()
 {
-  g_conf.debug_osd = 100;
-  g_conf.debug_journal = 100;
-  g_conf.debug_filestore = 100;
-  g_conf.debug_ms = 100;
+  g_conf->debug_osd = 100;
+  g_conf->debug_journal = 100;
+  g_conf->debug_filestore = 100;
+  g_conf->debug_ms = 100;
   
   derr << "OSD::shutdown" << dendl;
 
@@ -1320,7 +1320,7 @@ void OSD::_refresh_my_stat(utime_t now)
   assert(peer_stat_lock.is_locked());
 
   // refresh?
-  if (now - my_stat.stamp > g_conf.osd_stat_refresh_interval ||
+  if (now - my_stat.stamp > g_conf->osd_stat_refresh_interval ||
       pending_ops > 2*my_stat.qlen) {
 
     update_osd_stat();
@@ -1682,7 +1682,7 @@ void OSD::heartbeat_entry()
   while (!heartbeat_stop) {
     heartbeat();
 
-    double wait = .5 + ((float)(rand() % 10)/10.0) * (float)g_conf.osd_heartbeat_interval;
+    double wait = .5 + ((float)(rand() % 10)/10.0) * (float)g_conf->osd_heartbeat_interval;
     utime_t w;
     w.set_from_double(wait);
     dout(30) << "heartbeat_entry sleeping for " << wait << dendl;
@@ -1699,7 +1699,7 @@ void OSD::heartbeat_check()
 
   // check for incoming heartbeats (move me elsewhere?)
   utime_t grace = g_clock.now();
-  grace -= g_conf.osd_heartbeat_grace;
+  grace -= g_conf->osd_heartbeat_grace;
   for (map<int, epoch_t>::iterator p = heartbeat_from.begin();
        p != heartbeat_from.end();
        p++) {
@@ -1792,7 +1792,7 @@ void OSD::heartbeat()
   // hmm.. am i all alone?
   dout(30) << "heartbeat lonely?" << dendl;
   if (heartbeat_from.empty() || heartbeat_to.empty()) {
-    if (now - last_mon_heartbeat > g_conf.osd_mon_heartbeat_interval) {
+    if (now - last_mon_heartbeat > g_conf->osd_mon_heartbeat_interval) {
       last_mon_heartbeat = now;
       dout(10) << "i have no heartbeat peers; checking mon for new map" << dendl;
       monc->sub_want("osdmap", osdmap->get_epoch() + 1, CEPH_SUBSCRIBE_ONETIME);
@@ -1841,11 +1841,11 @@ void OSD::tick()
 
   // mon report?
   utime_t now = g_clock.now();
-  if (now - last_pg_stats_sent > g_conf.osd_mon_report_interval_max) {
+  if (now - last_pg_stats_sent > g_conf->osd_mon_report_interval_max) {
     osd_stat_updated = true;
     do_mon_report();
   }
-  else if (now - last_mon_report > g_conf.osd_mon_report_interval_min) {
+  else if (now - last_mon_report > g_conf->osd_mon_report_interval_min) {
     do_mon_report();
   }
 
@@ -2242,7 +2242,7 @@ void OSD::handle_command(MMonCommand *m)
 
   dout(20) << "handle_command args: " << m->cmd << dendl;
   if (m->cmd[0] == "injectargs")
-    g_conf.injectargs(m->cmd[1]);
+    g_conf->injectargs(m->cmd[1]);
   else if (m->cmd[0] == "stop") {
     dout(0) << "got shutdown" << dendl;
     shutdown();
@@ -2367,12 +2367,12 @@ void OSD::handle_command(MMonCommand *m)
       fout.close();
     }
     else if (m->cmd.size() == 3 && m->cmd[1] == "kick_recovery_wq") {
-      g_conf.osd_recovery_delay_start = atoi(m->cmd[2].c_str());
+      g_conf->osd_recovery_delay_start = atoi(m->cmd[2].c_str());
       clog.info() << "kicking recovery queue. set osd_recovery_delay_start "
-                   << "to " << g_conf.osd_recovery_delay_start << "\n";
+                   << "to " << g_conf->osd_recovery_delay_start << "\n";
 
       defer_recovery_until = g_clock.now();
-      defer_recovery_until += g_conf.osd_recovery_delay_start;
+      defer_recovery_until += g_conf->osd_recovery_delay_start;
       recovery_wq.kick();
     }
   }
@@ -2833,9 +2833,9 @@ bool OSD::scrub_should_schedule()
     return false;
   }
 
-  if (loadavgs[0] >= g_conf.osd_scrub_load_threshold) {
+  if (loadavgs[0] >= g_conf->osd_scrub_load_threshold) {
     dout(20) << "scrub_should_schedule loadavg " << loadavgs[0]
-            << " >= max " << g_conf.osd_scrub_load_threshold
+            << " >= max " << g_conf->osd_scrub_load_threshold
             << " = no, load too high" << dendl;
     return false;
   }
@@ -2843,16 +2843,16 @@ bool OSD::scrub_should_schedule()
   bool coin_flip = (rand() % 3) == whoami % 3;
   if (!coin_flip) {
     dout(20) << "scrub_should_schedule loadavg " << loadavgs[0]
-            << " < max " << g_conf.osd_scrub_load_threshold
+            << " < max " << g_conf->osd_scrub_load_threshold
             << " = no, randomly backing off"
             << dendl;
     return false;
   }
   
   dout(20) << "scrub_should_schedule loadavg " << loadavgs[0]
-          << " < max " << g_conf.osd_scrub_load_threshold
+          << " < max " << g_conf->osd_scrub_load_threshold
           << " = yes" << dendl;
-  return loadavgs[0] < g_conf.osd_scrub_load_threshold;
+  return loadavgs[0] < g_conf->osd_scrub_load_threshold;
 }
 
 void OSD::sched_scrub()
@@ -2863,7 +2863,7 @@ void OSD::sched_scrub()
 
   pair<utime_t,pg_t> pos;
   utime_t max = g_clock.now();
-  max -= g_conf.osd_scrub_max_interval;
+  max -= g_conf->osd_scrub_max_interval;
   
   sched_scrub_lock.Lock();
 
@@ -2878,7 +2878,7 @@ void OSD::sched_scrub()
 
     if (t > max) {
       dout(10) << " " << pgid << " at " << t
-              << " > " << max << " (" << g_conf.osd_scrub_max_interval << " seconds ago)" << dendl;
+              << " > " << max << " (" << g_conf->osd_scrub_max_interval << " seconds ago)" << dendl;
       break;
     }
 
@@ -2911,13 +2911,13 @@ bool OSD::inc_scrubs_pending()
   bool result = false;
 
   sched_scrub_lock.Lock();
-  if (scrubs_pending + scrubs_active < g_conf.osd_max_scrubs) {
+  if (scrubs_pending + scrubs_active < g_conf->osd_max_scrubs) {
     dout(20) << "inc_scrubs_pending " << scrubs_pending << " -> " << (scrubs_pending+1)
-            << " (max " << g_conf.osd_max_scrubs << ", active " << scrubs_active << ")" << dendl;
+            << " (max " << g_conf->osd_max_scrubs << ", active " << scrubs_active << ")" << dendl;
     result = true;
     ++scrubs_pending;
   } else {
-    dout(20) << "inc_scrubs_pending " << scrubs_pending << " + " << scrubs_active << " active >= max " << g_conf.osd_max_scrubs << dendl;
+    dout(20) << "inc_scrubs_pending " << scrubs_pending << " + " << scrubs_active << " active >= max " << g_conf->osd_max_scrubs << dendl;
   }
   sched_scrub_lock.Unlock();
 
@@ -2928,7 +2928,7 @@ void OSD::dec_scrubs_pending()
 {
   sched_scrub_lock.Lock();
   dout(20) << "dec_scrubs_pending " << scrubs_pending << " -> " << (scrubs_pending-1)
-          << " (max " << g_conf.osd_max_scrubs << ", active " << scrubs_active << ")" << dendl;
+          << " (max " << g_conf->osd_max_scrubs << ", active " << scrubs_active << ")" << dendl;
   --scrubs_pending;
   assert(scrubs_pending >= 0);
   sched_scrub_lock.Unlock();
@@ -2938,7 +2938,7 @@ void OSD::dec_scrubs_active()
 {
   sched_scrub_lock.Lock();
   dout(20) << "dec_scrubs_active " << scrubs_active << " -> " << (scrubs_active-1)
-          << " (max " << g_conf.osd_max_scrubs << ", pending " << scrubs_pending << ")" << dendl;
+          << " (max " << g_conf->osd_max_scrubs << ", pending " << scrubs_pending << ")" << dendl;
   --scrubs_active;
   sched_scrub_lock.Unlock();
 }
@@ -4759,9 +4759,9 @@ bool OSD::queue_for_recovery(PG *pg)
 
 bool OSD::_recover_now()
 {
-  if (recovery_ops_active >= g_conf.osd_recovery_max_active) {
+  if (recovery_ops_active >= g_conf->osd_recovery_max_active) {
     dout(15) << "_recover_now active " << recovery_ops_active
-            << " >= max " << g_conf.osd_recovery_max_active << dendl;
+            << " >= max " << g_conf->osd_recovery_max_active << dendl;
     return false;
   }
   if (g_clock.now() < defer_recovery_until) {
@@ -4776,7 +4776,7 @@ void OSD::do_recovery(PG *pg)
 {
   // see how many we should try to start.  note that this is a bit racy.
   recovery_wq.lock();
-  int max = g_conf.osd_recovery_max_active - recovery_ops_active;
+  int max = g_conf->osd_recovery_max_active - recovery_ops_active;
   recovery_wq.unlock();
   if (max == 0) {
     dout(10) << "do_recovery raced and failed to start anything; requeuing " << *pg << dendl;
@@ -4786,7 +4786,7 @@ void OSD::do_recovery(PG *pg)
     pg->lock();
     
     dout(10) << "do_recovery starting " << max
-            << " (" << recovery_ops_active << "/" << g_conf.osd_recovery_max_active << " rops) on "
+            << " (" << recovery_ops_active << "/" << g_conf->osd_recovery_max_active << " rops) on "
             << *pg << dendl;
 #ifdef DEBUG_RECOVERY_OIDS
     dout(20) << "  active was " << recovery_oids[pg->info.pgid] << dendl;
@@ -4795,7 +4795,7 @@ void OSD::do_recovery(PG *pg)
     int started = pg->start_recovery_ops(max);
     
     dout(10) << "do_recovery started " << started
-            << " (" << recovery_ops_active << "/" << g_conf.osd_recovery_max_active << " rops) on "
+            << " (" << recovery_ops_active << "/" << g_conf->osd_recovery_max_active << " rops) on "
             << *pg << dendl;
 
     /*
@@ -4832,7 +4832,7 @@ void OSD::start_recovery_op(PG *pg, const sobject_t& soid)
 {
   recovery_wq.lock();
   dout(10) << "start_recovery_op " << *pg << " " << soid
-          << " (" << recovery_ops_active << "/" << g_conf.osd_recovery_max_active << " rops)"
+          << " (" << recovery_ops_active << "/" << g_conf->osd_recovery_max_active << " rops)"
           << dendl;
   assert(recovery_ops_active >= 0);
   recovery_ops_active++;
@@ -4850,7 +4850,7 @@ void OSD::finish_recovery_op(PG *pg, const sobject_t& soid, bool dequeue)
 {
   dout(10) << "finish_recovery_op " << *pg << " " << soid
           << " dequeue=" << dequeue
-          << " (" << recovery_ops_active << "/" << g_conf.osd_recovery_max_active << " rops)"
+          << " (" << recovery_ops_active << "/" << g_conf->osd_recovery_max_active << " rops)"
           << dendl;
   recovery_wq.lock();
 
@@ -5073,8 +5073,8 @@ void OSD::handle_op(MOSDOp *op)
       return;
     }
     
-    if (g_conf.osd_max_write_size &&
-        op->get_data_len() > g_conf.osd_max_write_size << 20) {
+    if (g_conf->osd_max_write_size &&
+        op->get_data_len() > g_conf->osd_max_write_size << 20) {
       // journal can't hold commit!
       reply_op_error(op, -OSD_WRITETOOBIG);
       pg->unlock();
@@ -5115,7 +5115,7 @@ void OSD::handle_op(MOSDOp *op)
   }
 
   pg->get();
-  if (g_conf.osd_op_threads < 1) {
+  if (g_conf->osd_op_threads < 1) {
     // do it now.
     if (op->get_type() == CEPH_MSG_OSD_OP)
       pg->do_op((MOSDOp*)op);
@@ -5180,7 +5180,7 @@ void OSD::handle_sub_op(MOSDSubOp *op)
     return;
   }
 
-  if (g_conf.osd_op_threads < 1) {
+  if (g_conf->osd_op_threads < 1) {
     pg->do_sub_op(op);    // do it now
   } else {
     enqueue_op(pg, op);     // queue for worker threads
@@ -5217,7 +5217,7 @@ void OSD::handle_sub_op_reply(MOSDSubOpReply *op)
   } 
 
   PG *pg = _lookup_lock_pg(pgid);
-  if (g_conf.osd_op_threads < 1) {
+  if (g_conf->osd_op_threads < 1) {
     pg->do_sub_op_reply(op);    // do it now
   } else {
     enqueue_op(pg, op);     // queue for worker threads
@@ -5291,7 +5291,7 @@ void OSD::dequeue_op(PG *pg)
     dout(10) << "dequeue_op " << op << " finish" << dendl;
     assert(pending_ops > 0);
     
-    if (pending_ops > g_conf.osd_max_opq) 
+    if (pending_ops > g_conf->osd_max_opq) 
       op_queue_cond.Signal();
     
     pending_ops--;
@@ -5308,9 +5308,9 @@ void OSD::dequeue_op(PG *pg)
 void OSD::throttle_op_queue()
 {
   // throttle?  FIXME PROBABLY!
-  while (pending_ops > g_conf.osd_max_opq) {
+  while (pending_ops > g_conf->osd_max_opq) {
     dout(10) << "enqueue_op waiting for pending_ops " << pending_ops 
-            << " to drop to " << g_conf.osd_max_opq << dendl;
+            << " to drop to " << g_conf->osd_max_opq << dendl;
     op_queue_cond.Wait(osd_lock);
   }
 }
index f1cc10f93c83f78b45e09b9c068ed418b4872813..7576f2c2b0a386bd1d12990e615f49f694ce8729 100644 (file)
@@ -369,7 +369,7 @@ private:
 
     bool is_flash_crowd_candidate(const object_t& oid) const {
       Mutex::Locker locker(lock);
-      return get_average_iat(oid) <= g_conf.osd_flash_crowd_iat_threshold;
+      return get_average_iat(oid) <= g_conf->osd_flash_crowd_iat_threshold;
     }
   };
 
@@ -735,9 +735,9 @@ protected:
        pg->get();
        osd->recovery_queue.push_back(&pg->recovery_item);
 
-       if (g_conf.osd_recovery_delay_start > 0) {
+       if (g_conf->osd_recovery_delay_start > 0) {
          osd->defer_recovery_until = g_clock.now();
-         osd->defer_recovery_until += g_conf.osd_recovery_delay_start;
+         osd->defer_recovery_until += g_conf->osd_recovery_delay_start;
        }
        return true;
       }
index 3f433bf248ab6f30141f7027508661e74643212a..0a68877e05e815146fb089f0519f87fdc9f4c877 100644 (file)
@@ -201,7 +201,7 @@ void OSDMap::build_simple(epoch_t e, ceph_fsid_t &fsid,
   for (map<int,const char*>::iterator p = rulesets.begin(); p != rulesets.end(); p++) {
     int pool = ++pool_max;
     pools[pool].v.type = CEPH_PG_TYPE_REP;
-    pools[pool].v.size = g_conf.osd_pool_default_size;
+    pools[pool].v.size = g_conf->osd_pool_default_size;
     pools[pool].v.crush_ruleset = p->first;
     pools[pool].v.object_hash = CEPH_STR_HASH_RJENKINS;
     pools[pool].v.pg_num = nosd << pg_bits;
@@ -230,11 +230,11 @@ void OSDMap::build_simple_crush_map(CrushWrapper& crush, map<int, const char*>&
   crush.set_type_name(1, "domain");
   crush.set_type_name(2, "pool");
 
-  int minrep = g_conf.osd_min_rep;
-  int maxrep = g_conf.osd_max_rep;
+  int minrep = g_conf->osd_min_rep;
+  int maxrep = g_conf->osd_max_rep;
   assert(maxrep >= minrep);
   if (!ndom)
-    ndom = MAX(maxrep, g_conf.osd_max_raid_width);
+    ndom = MAX(maxrep, g_conf->osd_max_raid_width);
   if (ndom > 1 &&
       nosd >= ndom*3 &&
       nosd > 8) {
@@ -301,7 +301,7 @@ void OSDMap::build_simple_crush_map(CrushWrapper& crush, map<int, const char*>&
     // replication
     for (map<int,const char*>::iterator p = rulesets.begin(); p != rulesets.end(); p++) {
       int ruleset = p->first;
-      crush_rule *rule = crush_make_rule(3, ruleset, CEPH_PG_TYPE_REP, g_conf.osd_min_rep, maxrep);
+      crush_rule *rule = crush_make_rule(3, ruleset, CEPH_PG_TYPE_REP, g_conf->osd_min_rep, maxrep);
       crush_rule_set_step(rule, 0, CRUSH_RULE_TAKE, rootid, 0);
       crush_rule_set_step(rule, 1, CRUSH_RULE_CHOOSE_FIRSTN, CRUSH_CHOOSE_N, 0);
       crush_rule_set_step(rule, 2, CRUSH_RULE_EMIT, 0, 0);
index 55d89d2def7ebda1b7fcbb4d8f390487fe8eb391..8fff588a7b8303779d614b35eee4896e70addd18 100644 (file)
@@ -822,7 +822,7 @@ private:
     ps_t pps = pool.raw_pg_to_pps(pg);  // placement ps
     unsigned size = pool.get_size();
 
-    assert(g_conf.osd_pg_layout == CEPH_PG_LAYOUT_CRUSH);
+    assert(g_conf->osd_pg_layout == CEPH_PG_LAYOUT_CRUSH);
     {
       int preferred = pg.preferred();
       if (preferred >= max_osd || preferred >= crush.get_max_devices())
@@ -836,7 +836,7 @@ private:
   
     // no crush, but forcefeeding?
     if (pg.preferred() >= 0 &&
-       g_conf.osd_pg_layout != CEPH_PG_LAYOUT_CRUSH) {
+       g_conf->osd_pg_layout != CEPH_PG_LAYOUT_CRUSH) {
       int osd = pg.preferred();
       
       // already in there?
index fc0f1421ad621aa8bced873b304aa520e5174899..0e25ee23f906797ca362ec1efefba8ba4b356009 100644 (file)
@@ -1480,8 +1480,8 @@ void PG::activate(ObjectStore::Transaction& t, list<Context*>& tfin,
   // -- crash recovery?
   if (is_crashed()) {
     replay_until = g_clock.now();
-    replay_until += g_conf.osd_replay_window;
-    dout(10) << "crashed, allowing op replay for " << g_conf.osd_replay_window
+    replay_until += g_conf->osd_replay_window;
+    dout(10) << "crashed, allowing op replay for " << g_conf->osd_replay_window
             << " until " << replay_until << dendl;
     state_set(PG_STATE_REPLAY);
     osd->replay_queue_lock.Lock();
@@ -2097,7 +2097,7 @@ void PG::trim_ondisklog_to(ObjectStore::Transaction& t, eversion_t v)
   ::encode(ondisklog, blb);
   t.collection_setattr(coll, "ondisklog", blb);
 
-  if (!g_conf.osd_preserve_trimmed_log)
+  if (!g_conf->osd_preserve_trimmed_log)
     t.zero(coll_t::META_COLL, log_oid, 0, ondisklog.tail & ~4095);
 }
 
@@ -2565,7 +2565,7 @@ bool PG::sched_scrub()
   }
 
   // just scrubbed?
-  if (info.history.last_scrub_stamp + g_conf.osd_scrub_min_interval > g_clock.now()) {
+  if (info.history.last_scrub_stamp + g_conf->osd_scrub_min_interval > g_clock.now()) {
     dout(20) << "sched_scrub: just scrubbed, skipping" << dendl;
     return true;
   }
@@ -4116,13 +4116,13 @@ PG::RecoveryState::Active::react(const ActMap&) {
   assert(pg->is_primary());
   pg->check_recovery_op_pulls(pg->osd->osdmap);
        
-  if (g_conf.osd_check_for_log_corruption)
+  if (g_conf->osd_check_for_log_corruption)
     pg->check_log_for_corruption(pg->osd->store);
 
   int unfound = pg->missing.num_missing() - pg->missing_loc.size();
   if (unfound > 0 &&
       pg->all_unfound_are_lost(pg->osd->osdmap)) {
-    if (g_conf.osd_auto_mark_unfound_lost) {
+    if (g_conf->osd_auto_mark_unfound_lost) {
       pg->osd->clog.error() << pg->info.pgid << " has " << unfound
                            << " objects unfound and apparently lost, automatically marking lost\n";
       pg->mark_all_unfound_as_lost(*context< RecoveryMachine >().get_cur_transaction());
index ac071bd7b9f9bf38c45fb75cca36a1c68ca11df0..5b4e878a16842e2476becf868fc55dd4c9305981 100644 (file)
@@ -616,7 +616,7 @@ void ReplicatedPG::log_op_stats(OpContext *ctx)
        
     /*
     if (is_primary() &&
-       g_conf.osd_balance_reads)
+       g_conf->osd_balance_reads)
       stat_object_temp_rd[soid].hit(now, osd->decayrate);  // hit temp.
     */
   } else {
@@ -1342,8 +1342,8 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector<OSDOp>& ops,
        } catch (const buffer::error &e) {
          timeout = 0;
        }
-       if (!timeout || timeout > (uint32_t)g_conf.osd_max_notify_timeout)
-         timeout = g_conf.osd_max_notify_timeout;
+       if (!timeout || timeout > (uint32_t)g_conf->osd_max_notify_timeout)
+         timeout = g_conf->osd_max_notify_timeout;
 
        notify_info_t n;
        n.timeout = timeout;
@@ -3428,7 +3428,7 @@ int ReplicatedPG::pull(const sobject_t& soid)
 
   // only pull so much at a time
   interval_set<uint64_t> pullsub;
-  pullsub.span_of(data_subset, 0, g_conf.osd_recovery_max_chunk);
+  pullsub.span_of(data_subset, 0, g_conf->osd_recovery_max_chunk);
 
   // take note
   assert(pulling.count(soid) == 0);
@@ -3563,7 +3563,7 @@ void ReplicatedPG::push_start(const sobject_t& soid, int peer,
   pi->data_subset = data_subset;
   pi->clone_subsets = clone_subsets;
 
-  pi->data_subset_pushing.span_of(pi->data_subset, 0, g_conf.osd_recovery_max_chunk);
+  pi->data_subset_pushing.span_of(pi->data_subset, 0, g_conf->osd_recovery_max_chunk);
   bool complete = pi->data_subset_pushing == pi->data_subset;
 
   dout(10) << "push_start " << soid << " size " << size << " data " << data_subset
@@ -3681,7 +3681,7 @@ void ReplicatedPG::sub_op_push_reply(MOSDSubOpReply *reply)
     if (!complete) {
       // push more
       uint64_t from = pi->data_subset_pushing.range_end();
-      pi->data_subset_pushing.span_of(pi->data_subset, from, g_conf.osd_recovery_max_chunk);
+      pi->data_subset_pushing.span_of(pi->data_subset, from, g_conf->osd_recovery_max_chunk);
       dout(10) << " pushing more, " << pi->data_subset_pushing << " of " << pi->data_subset << dendl;
       complete = pi->data_subset.range_end() == pi->data_subset_pushing.range_end();
       send_push_op(soid, pi->version, peer, pi->size, false, complete,
@@ -4081,7 +4081,7 @@ void ReplicatedPG::sub_op_push(MOSDSubOp *op)
       update_stats();
     } else {
       // pull more
-      pi->data_subset_pulling.span_of(pi->data_subset, data_subset.range_end(), g_conf.osd_recovery_max_chunk);
+      pi->data_subset_pulling.span_of(pi->data_subset, data_subset.range_end(), g_conf->osd_recovery_max_chunk);
       dout(10) << " pulling more, " << pi->data_subset_pulling << " of " << pi->data_subset << dendl;
       send_pull_op(soid, v, false, pi->data_subset_pulling, pi->from);
     }
index 872ba87298eb1e21fe7f224e9771ace3a2b4148b..a7b8cd13deb0e2f0cd948f0cc7c3efc0bea5a631 100644 (file)
@@ -60,7 +60,7 @@ void Journaler::set_layout(ceph_file_layout *l)
 
   // prefetch intelligently.
   // (watch out, this is big if you use big objects or weird striping)
-  uint64_t periods = g_conf.journaler_prefetch_periods;
+  uint64_t periods = g_conf->journaler_prefetch_periods;
   if (periods < 2)
     periods = 2;  // we need at least 2 periods to make progress.
   fetch_len = layout.fl_stripe_count * layout.fl_object_size * periods;
@@ -419,7 +419,7 @@ uint64_t Journaler::append_entry(bufferlist& bl)
   assert(!readonly);
   uint32_t s = bl.length();
 
-  if (!g_conf.journaler_allow_split_entries) {
+  if (!g_conf->journaler_allow_split_entries) {
     // will we span a stripe boundary?
     int p = layout.fl_stripe_unit;
     if (write_pos / p != (write_pos + (int64_t)(bl.length() + sizeof(s))) / p) {
@@ -567,13 +567,13 @@ void Journaler::flush(Context *onsafe)
   } else {
     if (1) {
       // maybe buffer
-      if (write_buf.length() < g_conf.journaler_batch_max) {
+      if (write_buf.length() < g_conf->journaler_batch_max) {
        // delay!  schedule an event.
        dout(20) << "flush delaying flush" << dendl;
        if (delay_flush_event)
          timer->cancel_event(delay_flush_event);
        delay_flush_event = new C_DelayFlush(this);
-       timer->add_event_after(g_conf.journaler_batch_interval, delay_flush_event);     
+       timer->add_event_after(g_conf->journaler_batch_interval, delay_flush_event);    
       } else {
        dout(20) << "flush not delaying flush" << dendl;
        _do_flush();
@@ -586,7 +586,7 @@ void Journaler::flush(Context *onsafe)
   }
 
   // write head?
-  if (last_wrote_head.sec() + g_conf.journaler_write_head_interval < g_clock.now().sec()) {
+  if (last_wrote_head.sec() + g_conf->journaler_write_head_interval < g_clock.now().sec()) {
     write_head();
   }
 }
@@ -609,7 +609,7 @@ void Journaler::_issue_prezero()
 
   // we need to zero at least two periods, minimum, to ensure that we have a full
   // empty object/period in front of us.
-  uint64_t num_periods = MAX(2, g_conf.journaler_prezero_periods);
+  uint64_t num_periods = MAX(2, g_conf->journaler_prezero_periods);
 
   /*
    * issue zero requests based on write_pos, even though the invariant
index 68c9e9ddc82983a7043e0ec3f9fb2a433b44a8f0..e64d85d7c06589689559458395d6b5ffe75ea762 100644 (file)
@@ -737,7 +737,7 @@ void ObjectCacher::bh_write_commit(int poolid, sobject_t oid, loff_t start, uint
 void ObjectCacher::flush(loff_t amount)
 {
   utime_t cutoff = g_clock.now();
-  //cutoff.sec_ref() -= g_conf.client_oc_max_dirty_age;
+  //cutoff.sec_ref() -= g_conf->client_oc_max_dirty_age;
 
   dout(10) << "flush " << amount << dendl;
   
@@ -761,7 +761,7 @@ void ObjectCacher::flush(loff_t amount)
 void ObjectCacher::trim(loff_t max)
 {
   if (max < 0) 
-    max = g_conf.client_oc_size;
+    max = g_conf->client_oc_size;
   
   dout(10) << "trim  start: max " << max 
            << "  clean " << get_stat_clean()
@@ -1023,10 +1023,10 @@ bool ObjectCacher::wait_for_write(uint64_t len, Mutex& lock)
   int blocked = 0;
 
   // wait for writeback?
-  while (get_stat_dirty() + get_stat_tx() >= g_conf.client_oc_max_dirty) {
+  while (get_stat_dirty() + get_stat_tx() >= g_conf->client_oc_max_dirty) {
     dout(10) << "wait_for_write waiting on " << len << ", dirty|tx " 
             << (get_stat_dirty() + get_stat_tx()) 
-            << " >= " << g_conf.client_oc_max_dirty 
+            << " >= " << g_conf->client_oc_max_dirty 
             << dendl;
     flusher_cond.Signal();
     stat_waiter++;
@@ -1037,9 +1037,9 @@ bool ObjectCacher::wait_for_write(uint64_t len, Mutex& lock)
   }
 
   // start writeback anyway?
-  if (get_stat_dirty() > g_conf.client_oc_target_dirty) {
+  if (get_stat_dirty() > g_conf->client_oc_target_dirty) {
     dout(10) << "wait_for_write " << get_stat_dirty() << " > target "
-            << g_conf.client_oc_target_dirty << ", nudging flusher" << dendl;
+            << g_conf->client_oc_target_dirty << ", nudging flusher" << dendl;
     flusher_cond.Signal();
   }
   return blocked;
@@ -1053,21 +1053,21 @@ void ObjectCacher::flusher_entry()
     while (!flusher_stop) {
       loff_t all = get_stat_tx() + get_stat_rx() + get_stat_clean() + get_stat_dirty();
       dout(11) << "flusher "
-               << all << " / " << g_conf.client_oc_size << ":  "
+               << all << " / " << g_conf->client_oc_size << ":  "
                << get_stat_tx() << " tx, "
                << get_stat_rx() << " rx, "
                << get_stat_clean() << " clean, "
                << get_stat_dirty() << " dirty ("
-              << g_conf.client_oc_target_dirty << " target, "
-              << g_conf.client_oc_max_dirty << " max)"
+              << g_conf->client_oc_target_dirty << " target, "
+              << g_conf->client_oc_max_dirty << " max)"
                << dendl;
-      if (get_stat_dirty() > g_conf.client_oc_target_dirty) {
+      if (get_stat_dirty() > g_conf->client_oc_target_dirty) {
         // flush some dirty pages
         dout(10) << "flusher " 
                  << get_stat_dirty() << " dirty > target "
-                << g_conf.client_oc_target_dirty
+                << g_conf->client_oc_target_dirty
                  << ", flushing some dirty bhs" << dendl;
-        flush(get_stat_dirty() - g_conf.client_oc_target_dirty);
+        flush(get_stat_dirty() - g_conf->client_oc_target_dirty);
       }
       else {
         // check tail of lru for old dirty items
@@ -1165,7 +1165,7 @@ int ObjectCacher::atomic_sync_writex(OSDWrite *wr, ObjectSet *oset, Mutex& lock)
            << dendl;
 
   if (wr->extents.size() == 1 &&
-      wr->extents.front().length <= g_conf.client_oc_max_sync_write) {
+      wr->extents.front().length <= g_conf->client_oc_max_sync_write) {
     // single object.
     
     // make sure we aren't already locking/locked...
index b8bfccf9d8765a5d234fbd61ce4f10916704feb7..cc785d221ec28683abc0f499211edeae8a3c788f 100644 (file)
@@ -50,7 +50,7 @@
 void Objecter::init()
 {
   assert(client_lock.is_locked());
-  timer.add_event_after(g_conf.objecter_tick_interval, new C_Tick(this));
+  timer.add_event_after(g_conf->objecter_tick_interval, new C_Tick(this));
   maybe_request_map();
 }
 
@@ -410,7 +410,7 @@ void Objecter::tick()
 
   // look for laggy requests
   utime_t cutoff = g_clock.now();
-  cutoff -= g_conf.objecter_timeout;  // timeout
+  cutoff -= g_conf->objecter_timeout;  // timeout
 
   for (hash_map<tid_t,Op*>::iterator p = ops.begin();
        p != ops.end();
@@ -435,13 +435,13 @@ void Objecter::tick()
   }
     
   // reschedule
-  timer.add_event_after(g_conf.objecter_tick_interval, new C_Tick(this));
+  timer.add_event_after(g_conf->objecter_tick_interval, new C_Tick(this));
 }
 
 void Objecter::resend_mon_ops()
 {
   utime_t cutoff = g_clock.now();
-  cutoff -= g_conf.objecter_mon_retry_interval;
+  cutoff -= g_conf->objecter_mon_retry_interval;
 
 
   for (map<tid_t,PoolStatOp*>::iterator p = poolstat_ops.begin(); p!=poolstat_ops.end(); ++p) {
index 3044c01c93ca309721ba5003369ae705b990cefb..c108efa6c45b094acd2a60ab6bf05808c5fc23e3 100644 (file)
@@ -574,7 +574,7 @@ public:
     last_seen_pgmap_version(0),
     client_lock(l), timer(t),
     num_homeless_ops(0),
-    op_throttler(g_conf.objecter_inflight_op_bytes)
+    op_throttler(g_conf->objecter_inflight_op_bytes)
   { }
   ~Objecter() { }
 
index bf77ab593bed546d7c93b19894c973913a56815a..fb6e7f25b51e41b0e8c5209d61982acc11d4337a 100644 (file)
@@ -60,9 +60,9 @@ int main(int argc, const char **argv)
   bool tree = false;
   bool createsimple = false;
   int num_osd = 0, num_dom = 0;
-  int pg_bits = g_conf.osd_pg_bits;
-  int pgp_bits = g_conf.osd_pgp_bits;
-  int lpg_bits = g_conf.osd_lpg_bits;
+  int pg_bits = g_conf->osd_pg_bits;
+  int pgp_bits = g_conf->osd_pgp_bits;
+  int lpg_bits = g_conf->osd_lpg_bits;
   bool clobber = false;
   bool modified = false;
   const char *export_crush = 0;
index 0a73d9cb612a31090f5f0572ed70bc5656613063..48f4c5c2a636aeae8c9ddb9afe2380e53bf0275a 100644 (file)
@@ -51,7 +51,7 @@ void ceph_heap_profiler_start()
 {
   char profile_name[PATH_MAX];
   snprintf(profile_name, sizeof(profile_name),
-          "%s/%s", g_conf.log_dir.c_str(), g_conf.name.to_cstr());
+          "%s/%s", g_conf->log_dir.c_str(), g_conf->name.to_cstr());
   generic_dout(0) << "turning on heap profiler with prefix "
                  << profile_name << dendl;
   HeapProfilerStart(profile_name);
@@ -76,24 +76,24 @@ void ceph_heap_profiler_handle_command(const std::vector<std::string>& cmd,
     else {
       char *heap_stats = new char[1024];
       ceph_heap_profiler_stats(heap_stats, 1024);
-      clog.info() << g_conf.name << "dumping heap profile now.\n"
+      clog.info() << g_conf->name << "dumping heap profile now.\n"
                  << heap_stats << std::endl;
       ceph_heap_profiler_dump("admin request");
     }
   } else if (cmd.size() == 2 && cmd[1] == "start_profiler") {
     ceph_heap_profiler_start();
-    clog.info() << g_conf.name << " started profiler \n";
+    clog.info() << g_conf->name << " started profiler \n";
   } else if (cmd.size() == 2 && cmd[1] == "stop_profiler") {
     ceph_heap_profiler_stop();
-    clog.info() << g_conf.name << " stopped profiler\n";
+    clog.info() << g_conf->name << " stopped profiler\n";
   } else if (cmd.size() == 2 && cmd[1] == "release") {
     ceph_heap_release_free_memory();
-    clog.info() << g_conf.name << " releasing free RAM back "
+    clog.info() << g_conf->name << " releasing free RAM back "
                 << "to system.\n";
   } else if (cmd.size() == 2 && cmd[1] == "stats") {
     char *heap_stats = new char[1024];
     ceph_heap_profiler_stats(heap_stats, 1024);
-    clog.info() << g_conf.name << "tcmalloc heap stats:"
+    clog.info() << g_conf->name << "tcmalloc heap stats:"
                << heap_stats << std::endl;
   } else {
     clog.warn() << "unknown command " << cmd << std::endl;
index e0f07776cbf592f82eb90d58284b9800de441423..fc5db60819220d8f2f39014a18b729dd7c084a63 100644 (file)
@@ -24,7 +24,7 @@
 #include <sstream>
 #include <string.h>
 
-#define RGW_LOG(x) pdout(x, g_conf.rgw_log)
+#define RGW_LOG(x) pdout(x, g_conf->rgw_log)
 
 static Mutex librgw_init_mutex("librgw_init");
 static int librgw_initialized = 0;
index d8b049b30df55dc42eb01c53d51c3ec4413ccb08..c525616f3ee220647fe4dd228bc89f052c7ac6df 100644 (file)
@@ -48,7 +48,7 @@ extern string rgw_root_bucket;
 #define RGW_MAX_CHUNK_SIZE     (4*1024*1024)
 
 #define RGW_LOG_BEGIN "RADOS S3 Gateway:"
-#define RGW_LOG(x) pdout(x, g_conf.rgw_log)
+#define RGW_LOG(x) pdout(x, g_conf->rgw_log)
 
 #define RGW_FORMAT_XML          1
 #define RGW_FORMAT_JSON         2
index 4dee2cadaaef48bccf96c4482834a0dc008adda0..38617c6c3ae03087ebb8c4620a9b94a1e88d6a95 100644 (file)
@@ -95,7 +95,7 @@ static int get_policy_from_attr(RGWAccessControlPolicy *policy, string& bucket,
     if (ret >= 0) {
       bufferlist::iterator iter = bl.begin();
       policy->decode(iter);
-      if (g_conf.rgw_log >= 15) {
+      if (g_conf->rgw_log >= 15) {
         RGW_LOG(15) << "Read AccessControlPolicy" << dendl;
         policy->to_xml(cerr);
         RGW_LOG(15) << dendl;
@@ -746,7 +746,7 @@ void RGWPutACLs::execute()
     goto done;
   }
 
-  if (g_conf.rgw_log >= 15) {
+  if (g_conf->rgw_log >= 15) {
     RGW_LOG(15) << "Old AccessControlPolicy" << dendl;
     policy->to_xml(cout);
     RGW_LOG(15) << dendl;
@@ -756,7 +756,7 @@ void RGWPutACLs::execute()
   if (ret < 0)
     goto done;
 
-  if (g_conf.rgw_log >= 15) {
+  if (g_conf->rgw_log >= 15) {
     RGW_LOG(15) << "New AccessControlPolicy" << dendl;
     new_policy.to_xml(cout);
     RGW_LOG(15) << dendl;
@@ -782,14 +782,14 @@ void RGWHandler::init_state(struct req_state *s, struct fcgx_state *fcgx)
   if (cgi_env_level != NULL) {
     int level = atoi(cgi_env_level);
     if (level >= 0) {
-      g_conf.rgw_log = level;
+      g_conf->rgw_log = level;
     }
   }
 
   const char *cgi_should_log = FCGX_GetParam("RGW_SHOULD_LOG", fcgx->envp);
   s->should_log = rgw_str_to_bool(cgi_should_log, RGW_SHOULD_LOG_DEFAULT);
 
-  if (g_conf.rgw_log >= 20) {
+  if (g_conf->rgw_log >= 20) {
     char *p;
     for (int i=0; (p = fcgx->envp[i]); ++i) {
       RGW_LOG(20) << p << dendl;
index 56bdd6d31947297891389730a8f78d21f597f569..71adf7f71e50b47ffdd32a003343be6d8109c63c 100644 (file)
@@ -582,7 +582,7 @@ int RGWRados::prepare_get_obj(std::string& bucket, std::string& oid,
 
   if (attrs) {
     r = state->io_ctx.getxattrs(oid, *attrs);
-    if (g_conf.rgw_log >= 20) {
+    if (g_conf->rgw_log >= 20) {
       for (iter = attrs->begin(); iter != attrs->end(); ++iter) {
         RGW_LOG(20) << "Read xattr: " << iter->first << dendl;
       }
index 2b8608e35885b48efd12a62dd928d45e61811d91..bbad110adf773a0b143383e43a45922b71a1fc7f 100644 (file)
@@ -48,7 +48,7 @@ int main(int argc, const char **argv)
       changed.insert(*t);
     }
     DoutLocker _dout_locker;
-    dos->handle_conf_change(&g_conf, changed);
+    dos->handle_conf_change(g_conf, changed);
   }
   derr << "using configuration: " << dos->config_to_str() << dendl;
 
index 1a274e6a68bc81f7455049387ae3ddb767659404..0f9cf37a0688681537f19557d31c282ae18cdcb5 100644 (file)
@@ -85,7 +85,7 @@ int main(int argc, const char **argv, const char *envp[]) {
   // start up network
   int whoami = mc.monmap.get_rank(args[0]);
   assert(whoami >= 0);
-  g_conf.public_addr = mc.monmap.get_addr(whoami);
+  g_conf->public_addr = mc.monmap.get_addr(whoami);
   SimpleMessenger *rank = new SimpleMessenger();
   int err = rank->bind(getpid());
   if (err < 0)
index dda210977242eb0cd45e0e6a294104f6047cc5a8..3319e696c0adc79aaba91e90d9946cbe007295da 100644 (file)
@@ -238,7 +238,7 @@ void send_observe_requests()
   }
 
   registered.clear();
-  float seconds = g_conf.paxos_observer_timeout/2;
+  float seconds = g_conf->paxos_observer_timeout/2;
   dout(1) << " refresh after " << seconds << " with same mon" << dendl;
   g.timer.add_event_after(seconds, new C_ObserverRefresh(false));
 }
@@ -534,7 +534,7 @@ int ceph_tool_common_init(ceph_tool_mode_t mode)
   g.mc.init();
 
   if (g.mc.authenticate() < 0) {
-    derr << "unable to authenticate as " << g_conf.name << dendl;
+    derr << "unable to authenticate as " << g_conf->name << dendl;
     ceph_tool_messenger_shutdown();
     ceph_tool_common_shutdown();
     return 1;