]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
os/bluestore: make bad symlink target error messages more informative
authorSage Weil <sage@redhat.com>
Fri, 8 Jun 2018 13:34:53 +0000 (08:34 -0500)
committerSage Weil <sage@redhat.com>
Tue, 26 Jun 2018 11:42:16 +0000 (06:42 -0500)
Signed-off-by: Sage Weil <sage@redhat.com>
(cherry picked from commit aea215103caf669c3e289cc07f978511d61f68b0)

src/os/bluestore/BlueStore.cc

index 8cf9888f0f79711fe6c04989457907f882c14f7d..6fdd11b170b2403af505c2cf68717d686314893f 100644 (file)
@@ -4586,13 +4586,16 @@ int BlueStore::_open_db(bool create)
       }
       bluefs_shared_bdev = BlueFS::BDEV_SLOW;
       bluefs_single_shared_device = false;
-    } else if (::lstat(bfn.c_str(), &st) == -1) {
-      bluefs_shared_bdev = BlueFS::BDEV_DB;
     } else {
-      //symlink exist is bug
-      derr << __func__ << " " << bfn << " link target doesn't exist" << dendl;
       r = -errno;
-      goto free_bluefs;
+      if (::lstat(bfn.c_str(), &st) == -1) {
+       r = 0;
+       bluefs_shared_bdev = BlueFS::BDEV_DB;
+      } else {
+       derr << __func__ << " " << bfn << " symlink exists but target unusable: "
+            << cpp_strerror(r) << dendl;
+       goto free_bluefs;
+      }
     }
 
     // shared device
@@ -4654,13 +4657,16 @@ int BlueStore::_open_db(bool create)
       }
       cct->_conf->set_val("rocksdb_separate_wal_dir", "true");
       bluefs_single_shared_device = false;
-    } else if (::lstat(bfn.c_str(), &st) == -1) {
-      cct->_conf->set_val("rocksdb_separate_wal_dir", "false");
     } else {
-      //symlink exist is bug
-      derr << __func__ << " " << bfn << " link target doesn't exist" << dendl;
       r = -errno;
-      goto free_bluefs;
+      if (::lstat(bfn.c_str(), &st) == -1) {
+       r = 0;
+       cct->_conf->set_val("rocksdb_separate_wal_dir", "false");
+      } else {
+       derr << __func__ << " " << bfn << " symlink exists but target unusable: "
+            << cpp_strerror(r) << dendl;
+       goto free_bluefs;
+      }
     }
 
     if (create) {