tools/ceph_kvstore_tool: do not open rocksdb when repairing it

before this change, the `need_open_db` parameter is passed to the
constructor of BlueStore as `min_alloc_size`. and rocksdb will fail to
repair because Repairer::Run() also tries to acquire the db lock, and it
will fail to do so if the lock file is already acquired by
BlueStore::_mount().

Signed-off-by: Kefu Chai <kchai@redhat.com>
This commit is contained in:
Kefu Chai 2018-11-15 13:56:19 +08:00
parent eaf8e40980
commit 85c65a58cc

View File

@ -62,9 +62,9 @@ class StoreTool
StoreTool(string type, const string &path, bool need_open_db=true) : store_path(path) {
if (type == "bluestore-kv") {
#ifdef WITH_BLUESTORE
auto bluestore = new BlueStore(g_ceph_context, path, need_open_db);
auto bluestore = new BlueStore(g_ceph_context, path);
KeyValueDB *db_ptr;
int r = bluestore->start_kv_only(&db_ptr);
int r = bluestore->start_kv_only(&db_ptr, need_open_db);
if (r < 0) {
exit(1);
}