From: Igor Fedotov Date: Tue, 31 Aug 2021 12:54:23 +0000 (+0300) Subject: os/bluestore: fix bluefs migrate command X-Git-Tag: v17.1.0~943^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=90852d9b6f0da7967121200c9a1c56bed1929d2d;p=ceph.git os/bluestore: fix bluefs migrate command After migrating DB volume to a slow one RocksDB still needs to be provided with slow.db path to properly access relevant files under db.slow subfolder. Without that specification it tries to access them under 'db' one which results in "not-found" error. Fixes: https://tracker.ceph.com/issues/40434 Signed-off-by: Igor Fedotov --- diff --git a/src/os/bluestore/BlueFS.cc b/src/os/bluestore/BlueFS.cc index c991d66c3f7..787ef50f190 100644 --- a/src/os/bluestore/BlueFS.cc +++ b/src/os/bluestore/BlueFS.cc @@ -3788,7 +3788,9 @@ uint8_t OriginalVolumeSelector::select_prefer_bdev(void* hint) void OriginalVolumeSelector::get_paths(const std::string& base, paths& res) const { res.emplace_back(base, db_total); - res.emplace_back(base + ".slow", slow_total); + res.emplace_back(base + ".slow", + slow_total ? slow_total : db_total); // use fake non-zero value if needed to + // avoid RocksDB complains } #undef dout_prefix diff --git a/src/os/bluestore/BlueStore.cc b/src/os/bluestore/BlueStore.cc index a819b80c4a1..2ece4da27bc 100644 --- a/src/os/bluestore/BlueStore.cc +++ b/src/os/bluestore/BlueStore.cc @@ -6138,9 +6138,7 @@ int BlueStore::_prepare_db_environment(bool create, bool read_only, BlueFSVolumeSelector::paths paths; bluefs->get_vselector_paths(fn, paths); - if (bluefs_layout.shared_bdev == BlueFS::BDEV_SLOW) { - // we have both block.db and block; tell rocksdb! - // note: the second (last) size value doesn't really matter + { ostringstream db_paths; bool first = true; for (auto& p : paths) {