If bluestore_block_db_create or bluestore_block_db_create is false
and we use non-exist blockdevice as db/wal. ceph-osd still work and it
use block as db/wal. This bug introduced by
316810d7e74.
If stat(symlink) error and symlink still exist, this is bug.
Signed-off-by: Jianpeng Ma <jianpeng.ma@intel.com>
}
bluefs_shared_bdev = BlueFS::BDEV_SLOW;
bluefs_single_shared_device = false;
- } else {
+ } 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;
}
// shared device
}
cct->_conf->set_val("rocksdb_separate_wal_dir", "true");
bluefs_single_shared_device = false;
- } else {
+ } 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 (create) {