]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mon: stop doing rm -rf on mon mkfs
authorSage Weil <sage@inktank.com>
Tue, 10 Jul 2012 01:17:16 +0000 (18:17 -0700)
committerSage Weil <sage@inktank.com>
Mon, 16 Jul 2012 23:14:39 +0000 (16:14 -0700)
Simply verify that the directory exists, or if it doesn't, create it.
Do nothing about its content.

Signed-off-by: Sage Weil <sage@inktank.com>
src/mon/MonitorStore.cc

index ea4ac17cee85d238510bee55ac07f799fda3646a..dedd897d8487fa8033f47516e6e5c6e351eeac78 100644 (file)
@@ -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;
 }