From bd018bf48ba98d1c43322a0a34ee4a1f9b46c886 Mon Sep 17 00:00:00 2001 From: Leo Zhang Date: Wed, 18 Oct 2017 10:10:54 +0800 Subject: [PATCH] ceph-bluestore-tool: create out_dir before create full path of kvdb Signed-off-by: Leo Zhang --- src/os/bluestore/bluestore_tool.cc | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/src/os/bluestore/bluestore_tool.cc b/src/os/bluestore/bluestore_tool.cc index 23d595442080..a83b9ed3ba95 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] == '.') -- 2.47.3