_init_logger();
cct->_conf.add_observer(this);
set_cache_shards(1);
+ bluestore_bdev_label_require_all = cct->_conf.get_val<bool>("bluestore_bdev_label_require_all");
}
BlueStore::~BlueStore()
<< " does not match our fsid " << fsid << dendl;
return -EIO;
}
- if (cct->_conf.get_val<bool>("bluestore_bdev_label_require_all")) {
+ if (bluestore_bdev_label_require_all) {
if (r != 0) {
derr << __func__ << "not all labels read properly" << dendl;
return -EIO;
derr << __func__ << " fsck error: no valid block device label found" << dendl;
return r;
}
+ // hack - sanitize check for bdev label
+ bluestore_bdev_label_require_all = false;
}
+ auto restore_option = make_scope_guard([&] {
+ bluestore_bdev_label_require_all = cct->_conf.get_val<bool>("bluestore_bdev_label_require_all");
+ });
+
// in deep mode we need R/W write access to be able to replay deferred ops
const bool read_only = !(repair || depth == FSCK_DEEP);
int r = _open_db_and_around(read_only);
std::vector<uint64_t> bdev_label_valid_locations; // this has any elements
bool bdev_label_multi = false;
int64_t bdev_label_epoch = -1;
+ bool bluestore_bdev_label_require_all = false;
typedef std::map<uint64_t, volatile_statfs> osd_pools_map;