From: Kefu Chai Date: Thu, 15 Nov 2018 05:56:19 +0000 (+0800) Subject: tools/ceph_kvstore_tool: do not open rocksdb when repairing it X-Git-Tag: v14.1.0~914^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F25108%2Fhead;p=ceph.git 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 --- diff --git a/src/tools/ceph_kvstore_tool.cc b/src/tools/ceph_kvstore_tool.cc index 4198f09a5d2b..c66853a73abf 100644 --- a/src/tools/ceph_kvstore_tool.cc +++ b/src/tools/ceph_kvstore_tool.cc @@ -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); }