From 54be9d0917e84958c514d0f5ad45fb40c935ad40 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Mon, 9 Jul 2012 18:17:16 -0700 Subject: [PATCH] mon: stop doing rm -rf on mon mkfs Simply verify that the directory exists, or if it doesn't, create it. Do nothing about its content. Signed-off-by: Sage Weil --- src/mon/MonitorStore.cc | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/src/mon/MonitorStore.cc b/src/mon/MonitorStore.cc index ea4ac17cee85d..dedd897d8487f 100644 --- a/src/mon/MonitorStore.cc +++ b/src/mon/MonitorStore.cc @@ -95,21 +95,24 @@ int MonitorStore::umount() int MonitorStore::mkfs() { - std::string ret = run_cmd("rm", "-rf", dir.c_str(), (char*)NULL); - if (!ret.empty()) { - derr << "MonitorStore::mkfs: failed to remove " << dir - << ": rm returned " << ret << dendl; - return -EIO; + int err; + + err = ::mkdir(dir.c_str(), 0700); + if (err < 0 && errno != EEXIST) { + err = -errno; + derr << "MonitorStore::mkfs: unable to create " << dir << ": " << cpp_strerror(err) << dendl; + return err; } - ret = run_cmd("mkdir", "-p", dir.c_str(), (char*)NULL); - if (!ret.empty()) { - derr << "MonitorStore::mkfs: failed to mkdir -p " << dir - << ": mkdir returned " << ret << dendl; - return -EIO; + int fd = ::open(dir.c_str(), O_RDONLY); + if (fd < 0) { + err = -errno; + derr << "MonitorStore::mkfs: unable to open " << dir << ": " << cpp_strerror(err) << dendl; + return err; } + ::close(fd); - dout(0) << "created monfs at " << dir.c_str() << " for " + dout(0) << "created monfs at " << dir << " for " << g_conf->name.get_id() << dendl; return 0; } -- 2.39.5