]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
os/newstore: always create db.wal
authorSage Weil <sage@redhat.com>
Mon, 16 Nov 2015 21:02:48 +0000 (16:02 -0500)
committerSage Weil <sage@redhat.com>
Fri, 1 Jan 2016 18:06:32 +0000 (13:06 -0500)
Signed-off-by: Sage Weil <sage@redhat.com>
src/kv/RocksDBStore.cc
src/os/newstore/NewStore.cc

index 561b065ed9bf9d967ea060e9697804750aff3ebf..abcf114e8de68ed52dafb5bcb83c07b2a2c2c73c 100644 (file)
@@ -152,10 +152,19 @@ int RocksDBStore::init(string _options_str)
 
 int RocksDBStore::create_and_open(ostream &out)
 {
+  int r = ::mkdir(path.c_str(), 0755);
+  if (r < 0)
+    r = -errno;
+  if (r < 0 && r != -EEXIST) {
+    derr << __func__ << " failed to create " << path << ": " << cpp_strerror(r)
+        << dendl;
+    return r;
+  }
+
   // create tertiary paths
   string wal_path = path + ".wal";
   struct stat st;
-  int r = ::stat(wal_path.c_str(), &st);
+  r = ::stat(wal_path.c_str(), &st);
   if (r < 0)
     r = -errno;
   if (r == -ENOENT) {
index 132724410924f8ea05bea858b4808c25a1077e3b..c4ff39b7a2abbf0f37860ebf54a8528a7903b643 100644 (file)
@@ -923,6 +923,19 @@ int NewStore::_open_db(bool create)
           << dendl;
       return r;
     }
+
+    // wal_dir, too!
+    char walfn[PATH_MAX];
+    snprintf(walfn, sizeof(walfn), "%s/db.wal", path.c_str());
+    r = ::mkdir(walfn, 0755);
+    if (r < 0)
+      r = -errno;
+    if (r < 0 && r != -EEXIST) {
+      derr << __func__ << " failed to create " << walfn
+          << ": " << cpp_strerror(r)
+          << dendl;
+      return r;
+    }
   }
   db = KeyValueDB::create(g_ceph_context,
                          g_conf->newstore_backend,