]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
ceph-bluestore-tool: create out_dir before create full path of kvdb 18367/head
authorLeo Zhang <nguzcf@gmail.com>
Wed, 18 Oct 2017 02:10:54 +0000 (10:10 +0800)
committerLeo Zhang <nguzcf@gmail.com>
Thu, 19 Oct 2017 03:58:46 +0000 (11:58 +0800)
Signed-off-by: Leo Zhang <nguzcf@gmail.com>
src/os/bluestore/bluestore_tool.cc

index 23d595442080bd14e12efbca10ab9eeafda67db9..a83b9ed3ba951c283cd5313074944accbeebd704 100644 (file)
@@ -316,6 +316,16 @@ int main(int argc, char **argv)
       cerr << "readdir in root failed: " << cpp_strerror(r) << std::endl;
       exit(EXIT_FAILURE);
     }
+
+    if (::access(out_dir.c_str(), F_OK)) {
+      r = ::mkdir(out_dir.c_str(), 0755);
+      if (r < 0) {
+        r = -errno;
+        cerr << "mkdir " << out_dir << " failed: " << cpp_strerror(r) << std::endl;
+        exit(EXIT_FAILURE);
+      }
+    }
+
     for (auto& dir : dirs) {
       if (dir[0] == '.')
        continue;
@@ -327,11 +337,13 @@ int main(int argc, char **argv)
        exit(EXIT_FAILURE);
       }
       string full = out_dir + "/" + dir;
-      r = ::mkdir(full.c_str(), 0755);
-      if (r < 0) {
-        r = -errno;
-       cerr << "mkdir " << full << " failed: " << cpp_strerror(r) << std::endl;
-       exit(EXIT_FAILURE);
+      if (::access(full.c_str(), F_OK)) {
+        r = ::mkdir(full.c_str(), 0755);
+        if (r < 0) {
+          r = -errno;
+          cerr << "mkdir " << full << " failed: " << cpp_strerror(r) << std::endl;
+          exit(EXIT_FAILURE);
+        }
       }
       for (auto& file : ls) {
        if (file[0] == '.')