]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: autodetect ebofs vs fakestore by mode bits
authorSage Weil <sage@newdream.net>
Tue, 22 Apr 2008 22:57:49 +0000 (15:57 -0700)
committerSage Weil <sage@newdream.net>
Tue, 22 Apr 2008 22:57:49 +0000 (15:57 -0700)
src/config.cc
src/config.h
src/osd/OSD.cc

index d0a2630d3c1cdd37bd238930cb355901d5631d25..58fe09a743086e70b70484e2daa105a2402f8dac 100644 (file)
@@ -375,13 +375,14 @@ md_config_t g_conf = {
 
   
   // --- fakestore ---
+  fakestore: false,
   fakestore_sync_interval: .2,    // seconds
   fakestore_fake_attrs: false,
   fakestore_fake_collections: false,   
   fakestore_dev: 0,
 
   // --- ebofs ---
-  ebofs: 1,
+  ebofs: false,
   ebofs_cloneable: false,
   ebofs_verify: false,
   ebofs_commit_ms:      1000,       // 0 = no forced commit timeout (for debugging/tracing)
@@ -848,7 +849,7 @@ void parse_config_options(std::vector<const char*>& args)
       g_conf.client_hack_balance_reads = atoi(args[++i]);
 
     else if (strcmp(args[i], "--ebofs") == 0) 
-      g_conf.ebofs = 1;
+      g_conf.ebofs = true;
     else if (strcmp(args[i], "--ebofs_cloneable") == 0)
       g_conf.ebofs_cloneable = atoi(args[++i]);
     else if (strcmp(args[i], "--ebofs_verify") == 0)
@@ -869,7 +870,7 @@ void parse_config_options(std::vector<const char*>& args)
       g_conf.ebofs_max_prefetch = atoi(args[++i]);
     else if (strcmp(args[i], "--ebofs_realloc") == 0)
       g_conf.ebofs_realloc = atoi(args[++i]);
-\
+
     else if (strcmp(args[i], "--journal_dio") == 0)
       g_conf.journal_dio = atoi(args[++i]);      
     else if (strcmp(args[i], "--journal_max_write_entries") == 0)
@@ -877,11 +878,8 @@ void parse_config_options(std::vector<const char*>& args)
     else if (strcmp(args[i], "--journal_max_write_bytes") == 0)
       g_conf.journal_max_write_bytes = atoi(args[++i]);      
 
-    else if (strcmp(args[i], "--fakestore") == 0) {
-      g_conf.ebofs = 0;
-      //g_conf.osd_pg_bits = 5;
-      //g_conf.osd_maxthreads = 1;   // fucking hell
-    }
+    else if (strcmp(args[i], "--fakestore") == 0)
+      g_conf.fakestore = true;
     else if (strcmp(args[i], "--fakestore_sync_interval") == 0)
       g_conf.fakestore_sync_interval = atoi(args[++i]);
     else if (strcmp(args[i], "--fakestore_dev") == 0) 
index 5ea9005e9659aaa29cba1edab199f96091a37060..8bec51d6697cff394ecc5be7424ef2dd8f1c35b6 100644 (file)
@@ -274,13 +274,14 @@ struct md_config_t {
   bool osd_auto_weight;
 
   // fakestore
+  bool fakestore;
   double   fakestore_sync_interval;
   bool  fakestore_fake_attrs;
   bool  fakestore_fake_collections;
   const char  *fakestore_dev;
   
   // ebofs
-  int   ebofs;
+  bool  ebofs;
   bool  ebofs_cloneable;
   bool  ebofs_verify;
   int   ebofs_commit_ms;
index 14dc9f8ed750096deac6c2036e031407e8751f77..ae4d326e19d38eb4232e98f0854e1b7478bce68a 100644 (file)
@@ -120,18 +120,19 @@ int OSD::find_osd_dev(char *result, int whoami)
 
 ObjectStore *OSD::create_object_store(const char *dev)
 {
-  ObjectStore *store = 0;
-  
+  struct stat st;
+  if (::stat(dev, &st) != 0)
+    return 0;
+
   if (g_conf.ebofs) 
-    store = new Ebofs(dev);
-#ifdef USE_OSBDB
-  else if (g_conf.bdbstore)
-    store = new OSBDB(dev);
-#endif // USE_OSBDB
-  else
-    store = new FakeStore(dev);
+    return new Ebofs(dev);
+  if (g_conf.fakestore)
+    return new FakeStore(dev);
 
-  return store;
+  if (S_ISDIR(st.st_mode))
+    return new FakeStore(dev);
+  else
+    return new Ebofs(dev);
 }