From: Sage Weil Date: Tue, 28 Jan 2014 20:14:42 +0000 (-0800) Subject: Add a virtual interface init, open, create_and_open to KeyValueDB X-Git-Tag: v0.78~254^2~4 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=12ba8a3ac08043e501643aacd27319b145c1f1b9;p=ceph.git Add a virtual interface init, open, create_and_open to KeyValueDB This will provide an opportunity to set leveldb_* settings in the next patch. Signed-off-by: Haomai Wang Signed-off-by: Sage Weil --- diff --git a/src/mon/MonitorDBStore.h b/src/mon/MonitorDBStore.h index 213e8b94d6aa..35f5cbce4df7 100644 --- a/src/mon/MonitorDBStore.h +++ b/src/mon/MonitorDBStore.h @@ -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); } diff --git a/src/os/FileStore.cc b/src/os/FileStore.cc index e7490048ccb3..18685dcf1fc2 100644 --- a/src/os/FileStore.cc +++ b/src/os/FileStore.cc @@ -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)) { diff --git a/src/os/KeyValueDB.h b/src/os/KeyValueDB.h index 8b2cefb3aba6..c581aa52e2e7 100644 --- a/src/os/KeyValueDB.h +++ b/src/os/KeyValueDB.h @@ -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) { diff --git a/src/os/LevelDBStore.cc b/src/os/LevelDBStore.cc index 668f196675fa..0ace7fa73ef7 100644 --- a/src/os/LevelDBStore.cc +++ b/src/os/LevelDBStore.cc @@ -10,7 +10,12 @@ 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; diff --git a/src/os/LevelDBStore.h b/src/os/LevelDBStore.h index 8b5947af7e28..26e7bbe7c12e 100644 --- a/src/os/LevelDBStore.h +++ b/src/os/LevelDBStore.h @@ -54,7 +54,7 @@ class LevelDBStore : public KeyValueDB { #endif boost::scoped_ptr 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(); diff --git a/src/test/ObjectMap/KeyValueDBMemory.h b/src/test/ObjectMap/KeyValueDBMemory.h index c67f9b5cc059..f1ecd60d6099 100644 --- a/src/test/ObjectMap/KeyValueDBMemory.h +++ b/src/test/ObjectMap/KeyValueDBMemory.h @@ -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 &key,