// set past-eof blocks as allocated
_xor(size, blocks * bytes_per_block - size, txn);
}
- dout(0) << __func__
+ dout(1) << __func__
<< " size 0x" << std::hex << size
<< " bytes_per_block 0x" << bytes_per_block
<< " blocks 0x" << blocks
std::function<int(const std::string&, std::string*)> cfg_reader)
{
dout(1) << __func__ << dendl;
- int r = _init_from_external_cfg(cfg_reader);
+ int r = _read_cfg(cfg_reader);
if (r != 0) {
dout(1) << __func__ << " fall back to legacy meta repo" << dendl;
_load_from_db(kvdb);
return 0;
}
-int BitmapFreelistManager::_init_from_external_cfg(
+int BitmapFreelistManager::_read_cfg(
std::function<int(const std::string&, std::string*)> cfg_reader)
{
dout(1) << __func__ << dendl;
derr << __func__ << " Failed to parse - "
<< keys[i] << ":" << val
<< ", error: " << err << dendl;
- return r;
+ return -EINVAL;
}
} else {
// this is expected for legacy deployed OSDs
return res;
}
+int BlueStore::_set_bdev_label_size(const string& path, uint64_t size)
+{
+ bluestore_bdev_label_t label;
+ int r = _read_bdev_label(cct, path, &label);
+ if (r < 0) {
+ derr << "unable to read label for " << path << ": "
+ << cpp_strerror(r) << dendl;
+ } else {
+ label.size = size;
+ r = _write_bdev_label(cct, path, label);
+ if (r < 0) {
+ derr << "unable to write label for " << path << ": "
+ << cpp_strerror(r) << dendl;
+ }
+ }
+ return r;
+}
+
int BlueStore::expand_devices(ostream& out)
{
int r = cold_open();
<<": can't find device path " << dendl;
continue;
}
- bluestore_bdev_label_t label;
- int r = _read_bdev_label(cct, path, &label);
- if (r < 0) {
- derr << "unable to read label for " << path << ": "
- << cpp_strerror(r) << dendl;
- continue;
- }
- label.size = size;
- r = _write_bdev_label(cct, path, label);
- if (r < 0) {
- derr << "unable to write label for " << path << ": "
- << cpp_strerror(r) << dendl;
- continue;
+ if (bluefs->bdev_support_label(devid)) {
+ if (_set_bdev_label_size(p, size) >= 0) {
+ out << devid
+ << " : size label updated to " << size
+ << std::endl;
+ }
}
- out << devid
- <<" : size label updated to " << size
- << std::endl;
}
}
uint64_t size0 = fm->get_size();
<< " : expanding " << " from 0x" << std::hex
<< size0 << " to 0x" << size << std::dec << std::endl;
_write_out_fm_meta(size);
+ if (bdev->supported_bdev_label()) {
+ if (_set_bdev_label_size(path, size) >= 0) {
+ out << bluefs_layout.shared_bdev
+ << " : size label updated to " << size
+ << std::endl;
+ }
+ }
cold_close();
// mount in read/write to sync expansion changes