]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
os/bluestore: do not core dump when we try to open kvstore twice 18161/head
authorChang Liu <liuchang0812@gmail.com>
Sat, 7 Oct 2017 08:46:46 +0000 (16:46 +0800)
committerChang Liu <liuchang0812@gmail.com>
Sat, 7 Oct 2017 08:46:46 +0000 (16:46 +0800)
Signed-off-by: Chang Liu <liuchang0812@gmail.com>
src/os/bluestore/BlueFS.cc
src/os/bluestore/BlueRocksEnv.cc

index 8c41e88f5ec4c799ffc1335443a2b6ad60fe5bb9..5d033e7395b236c19c5cb94cde3c217721f0b39f 100644 (file)
@@ -2206,7 +2206,7 @@ int BlueFS::lock_file(const string& dirname, const string& filename,
     file = q->second.get();
     if (file->locked) {
       dout(10) << __func__ << " already locked" << dendl;
-      return -EBUSY;
+      return -ENOLCK;
     }
   }
   file->locked = true;
index a78f2f1e9e0264bcb8c635bc5f215c55aae489c0..bf67b982fcdfdd85ca3e5a89291a810466ba58a0 100644 (file)
@@ -5,6 +5,7 @@
 #include "BlueFS.h"
 #include "include/stringify.h"
 #include "kv/RocksDBStore.h"
+#include "string.h"
 
 rocksdb::Status err_to_status(int r)
 {
@@ -18,6 +19,8 @@ rocksdb::Status err_to_status(int r)
   case -EIO:
   case -EEXIST:
     return rocksdb::Status::IOError(rocksdb::Status::kNone);
+  case -ENOLCK:
+    return rocksdb::Status::IOError(strerror(r));
   default:
     // FIXME :(
     assert(0 == "unrecognized error code");