]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/rocksdb/env/env_chroot.cc
import quincy beta 17.1.0
[ceph.git] / ceph / src / rocksdb / env / env_chroot.cc
index 246437bdd245393431d1bbe0926e496ef755c932..4bc2f9a250721f803f95ce4dd20461071f201b7f 100644 (file)
@@ -38,6 +38,32 @@ class ChrootEnv : public EnvWrapper {
 #endif
   }
 
+  Status RegisterDbPaths(const std::vector<std::string>& paths) override {
+    std::vector<std::string> encoded_paths;
+    encoded_paths.reserve(paths.size());
+    for (auto& path : paths) {
+      auto status_and_enc_path = EncodePathWithNewBasename(path);
+      if (!status_and_enc_path.first.ok()) {
+        return status_and_enc_path.first;
+      }
+      encoded_paths.emplace_back(status_and_enc_path.second);
+    }
+    return EnvWrapper::Env::RegisterDbPaths(encoded_paths);
+  }
+
+  Status UnregisterDbPaths(const std::vector<std::string>& paths) override {
+    std::vector<std::string> encoded_paths;
+    encoded_paths.reserve(paths.size());
+    for (auto& path : paths) {
+      auto status_and_enc_path = EncodePathWithNewBasename(path);
+      if (!status_and_enc_path.first.ok()) {
+        return status_and_enc_path.first;
+      }
+      encoded_paths.emplace_back(status_and_enc_path.second);
+    }
+    return EnvWrapper::Env::UnregisterDbPaths(encoded_paths);
+  }
+
   Status NewSequentialFile(const std::string& fname,
                            std::unique_ptr<SequentialFile>* result,
                            const EnvOptions& options) override {
@@ -230,8 +256,7 @@ class ChrootEnv : public EnvWrapper {
     *path = buf;
 
     // Directory may already exist, so ignore return
-    CreateDir(*path);
-    return Status::OK();
+    return CreateDirIfMissing(*path);
   }
 
   Status NewLogger(const std::string& fname,