]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
Add a virtual interface init, open, create_and_open to KeyValueDB
authorSage Weil <sage@inktank.com>
Tue, 28 Jan 2014 20:14:42 +0000 (12:14 -0800)
committerSage Weil <sage@inktank.com>
Tue, 28 Jan 2014 20:14:42 +0000 (12:14 -0800)
This will provide an opportunity to set leveldb_* settings in the next
patch.

Signed-off-by: Haomai Wang <haomaiwang@gmail.com>
Signed-off-by: Sage Weil <sage@inktank.com>
src/mon/MonitorDBStore.h
src/os/FileStore.cc
src/os/KeyValueDB.h
src/os/LevelDBStore.cc
src/os/LevelDBStore.h
src/test/ObjectMap/KeyValueDBMemory.h

index 213e8b94d6aaaf94e94f82890c8ae301c2390fa4..35f5cbce4df7780e242e363c58837fffcde26450 100644 (file)
@@ -486,19 +486,33 @@ class MonitorDBStore
     db->submit_transaction_sync(dbt);
   }
 
+  void init_options() {
+    db->init();
+    if (g_conf->mon_leveldb_write_buffer_size)
+      db->options.write_buffer_size = g_conf->mon_leveldb_write_buffer_size;
+    if (g_conf->mon_leveldb_cache_size)
+      db->options.cache_size = g_conf->mon_leveldb_cache_size;
+    if (g_conf->mon_leveldb_block_size)
+      db->options.block_size = g_conf->mon_leveldb_block_size;
+    if (g_conf->mon_leveldb_bloom_size)
+      db->options.bloom_size = g_conf->mon_leveldb_bloom_size;
+    if (g_conf->mon_leveldb_compression)
+      db->options.compression_enabled = g_conf->mon_leveldb_compression;
+    if (g_conf->mon_leveldb_max_open_files)
+      db->options.max_open_files = g_conf->mon_leveldb_max_open_files;
+    if (g_conf->mon_leveldb_paranoid)
+      db->options.paranoid_checks = g_conf->mon_leveldb_paranoid;
+    if (g_conf->mon_leveldb_log)
+      db->options.log_file = g_conf->mon_leveldb_log;
+  }
+
   int open(ostream &out) {
-    db->options.write_buffer_size = g_conf->mon_leveldb_write_buffer_size;
-    db->options.cache_size = g_conf->mon_leveldb_cache_size;
-    db->options.block_size = g_conf->mon_leveldb_block_size;
-    db->options.bloom_size = g_conf->mon_leveldb_bloom_size;
-    db->options.compression_enabled = g_conf->mon_leveldb_compression;
-    db->options.max_open_files = g_conf->mon_leveldb_max_open_files;
-    db->options.paranoid_checks = g_conf->mon_leveldb_paranoid;
-    db->options.log_file = g_conf->mon_leveldb_log;
+    init_options();
     return db->open(out);
   }
 
   int create_and_open(ostream &out) {
+    init_options();
     return db->create_and_open(out);
   }
 
index e7490048ccb3499a16321c805872142a9c6c5a1e..18685dcf1fc2e598f9593889cbdaff163d031580 100644 (file)
@@ -1325,14 +1325,23 @@ int FileStore::mount()
   {
     LevelDBStore *omap_store = new LevelDBStore(g_ceph_context, omap_dir);
 
-    omap_store->options.write_buffer_size = g_conf->osd_leveldb_write_buffer_size;
-    omap_store->options.cache_size = g_conf->osd_leveldb_cache_size;
-    omap_store->options.block_size = g_conf->osd_leveldb_block_size;
-    omap_store->options.bloom_size = g_conf->osd_leveldb_bloom_size;
-    omap_store->options.compression_enabled = g_conf->osd_leveldb_compression;
-    omap_store->options.paranoid_checks = g_conf->osd_leveldb_paranoid;
-    omap_store->options.max_open_files = g_conf->osd_leveldb_max_open_files;
-    omap_store->options.log_file = g_conf->osd_leveldb_log;
+    omap_store->init();
+    if (g_conf->osd_leveldb_write_buffer_size)
+      omap_store->options.write_buffer_size = g_conf->osd_leveldb_write_buffer_size;
+    if (g_conf->osd_leveldb_cache_size)
+      omap_store->options.cache_size = g_conf->osd_leveldb_cache_size;
+    if (g_conf->osd_leveldb_block_size)
+      omap_store->options.block_size = g_conf->osd_leveldb_block_size;
+    if (g_conf->osd_leveldb_bloom_size)
+      omap_store->options.bloom_size = g_conf->osd_leveldb_bloom_size;
+    if (g_conf->osd_leveldb_compression)
+      omap_store->options.compression_enabled = g_conf->osd_leveldb_compression;
+    if (g_conf->osd_leveldb_paranoid)
+      omap_store->options.paranoid_checks = g_conf->osd_leveldb_paranoid;
+    if (g_conf->osd_leveldb_max_open_files)
+      omap_store->options.max_open_files = g_conf->osd_leveldb_max_open_files;
+    if (g_conf->osd_leveldb_log.length())
+      omap_store->options.log_file = g_conf->osd_leveldb_log;
 
     stringstream err;
     if (omap_store->create_and_open(err)) {
index 8b2cefb3aba6d2a81656e2b5e5719a24deeb811f..c581aa52e2e75b601b1319fe35609fb6f1af7d70 100644 (file)
@@ -64,6 +64,10 @@ public:
   };
   typedef ceph::shared_ptr< TransactionImpl > Transaction;
 
+  virtual int init() = 0;
+  virtual int open(ostream &out) = 0;
+  virtual int create_and_open(ostream &out) = 0;
+
   virtual Transaction get_transaction() = 0;
   virtual int submit_transaction(Transaction) = 0;
   virtual int submit_transaction_sync(Transaction t) {
index 668f196675fafabe4593c4958002d197c43a1874..0ace7fa73ef75a5e93e1c6db354bbc71dcc27c0d 100644 (file)
 using std::string;
 #include "common/perf_counters.h"
 
-int LevelDBStore::init(ostream &out, bool create_if_missing)
+int LevelDBStore::init()
+{
+  return 0;
+}
+
+int LevelDBStore::do_open(ostream &out, bool create_if_missing)
 {
   leveldb::Options ldoptions;
 
index 8b5947af7e28a599dbcf15841f19480d2e16402a..26e7bbe7c12ea89d36db8ae1b4238b7afbd24efe 100644 (file)
@@ -54,7 +54,7 @@ class LevelDBStore : public KeyValueDB {
 #endif
   boost::scoped_ptr<leveldb::DB> db;
 
-  int init(ostream &out, bool create_if_missing);
+  int do_open(ostream &out, bool create_if_missing);
 
   // manage async compactions
   Mutex compact_queue_lock;
@@ -154,13 +154,15 @@ public:
 
   ~LevelDBStore();
 
+  int init();
+
   /// Opens underlying db
   int open(ostream &out) {
-    return init(out, false);
+    return do_open(out, false);
   }
   /// Creates underlying db if missing and opens it
   int create_and_open(ostream &out) {
-    return init(out, true);
+    return do_open(out, true);
   }
 
   void close();
index c67f9b5cc059f487f7e92092d2e14fb3f911b3db..f1ecd60d60994084162cef6e3845e747f888515e 100644 (file)
@@ -19,6 +19,8 @@ public:
   KeyValueDBMemory(KeyValueDBMemory *db) : db(db->db) { }
   virtual ~KeyValueDBMemory() { }
 
+  virtual int init(ostream &out, bool create_if_missing) {}
+
   int get(
     const string &prefix,
     const std::set<string> &key,