From: Leo Zhang Date: Wed, 18 Oct 2017 02:10:54 +0000 (+0800) Subject: ceph-bluestore-tool: create out_dir before create full path of kvdb X-Git-Tag: v13.0.1~499^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=bd018bf48ba98d1c43322a0a34ee4a1f9b46c886;p=ceph.git ceph-bluestore-tool: create out_dir before create full path of kvdb Signed-off-by: Leo Zhang --- diff --git a/src/os/bluestore/bluestore_tool.cc b/src/os/bluestore/bluestore_tool.cc index 23d59544208..a83b9ed3ba9 100644 --- a/src/os/bluestore/bluestore_tool.cc +++ b/src/os/bluestore/bluestore_tool.cc @@ -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] == '.')