]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
os/bluestore: fix bluefs migrate command 42992/head
authorIgor Fedotov <ifedotov@suse.com>
Tue, 31 Aug 2021 12:54:23 +0000 (15:54 +0300)
committerIgor Fedotov <ifedotov@suse.com>
Tue, 31 Aug 2021 13:23:45 +0000 (16:23 +0300)
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 <ifedotov@suse.com>
src/os/bluestore/BlueFS.cc
src/os/bluestore/BlueStore.cc

index c991d66c3f7fb93e34b03cce9e257ca3fc5a58a7..787ef50f1903c8e6fa442ff2bbd09bb7cb4bcb5b 100644 (file)
@@ -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
index a819b80c4a197a7bc9edd094bc58b751e2ea2e4c..2ece4da27bc6eaed30e2573a3138e37bff2d5bbe 100644 (file)
@@ -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) {