return 0;
}
+int BlueStore::read_bdev_label(
+ CephContext* cct, const std::string &path,
+ bluestore_bdev_label_t *label, uint64_t disk_position)
+{
+ unique_ptr<BlockDevice> bdev(BlockDevice::create(
+ cct, path, nullptr, nullptr, nullptr, nullptr));
+ int r = bdev->open(path);
+ if (r < 0)
+ return r;
+ r = BlueStore::_read_bdev_label(
+ cct, bdev.get(), path, label, disk_position);
+ bdev->close();
+ return r;
+}
+int BlueStore::write_bdev_label(
+ CephContext* cct, const std::string &path,
+ const bluestore_bdev_label_t& label, uint64_t disk_position)
+{
+ unique_ptr<BlockDevice> bdev(BlockDevice::create(
+ cct, path, nullptr, nullptr, nullptr, nullptr));
+ int r = bdev->open(path);
+ if (r < 0)
+ return r;
+ r = BlueStore::_write_bdev_label(
+ cct, bdev.get(), path, label, {disk_position});
+ bdev->close();
+ return r;
+}
+
+
void BlueStore::_set_alloc_sizes(void)
{
max_alloc_size = cct->_conf->bluestore_max_alloc_size;
std::lock_guard l(deferred_lock);
return deferred_last_submitted;
}
-
+private:
static int _write_bdev_label(
CephContext* cct,
BlockDevice* bdev,
static int _read_bdev_label(
CephContext* cct, BlockDevice* bdev, const std::string &path,
bluestore_bdev_label_t *label, uint64_t disk_position = BDEV_FIRST_LABEL_POSITION);
-private:
int _check_or_set_bdev_label(const std::string& path, BlockDevice* bdev, uint64_t size,
const std::string& desc, bool create);
int _set_main_bdev_label();
return _write_bdev_label(cct, bdev, path, label,
std::vector<uint64_t>({disk_position}));
}
+ static int read_bdev_label(
+ CephContext* cct, const std::string &path,
+ bluestore_bdev_label_t *label, uint64_t disk_position = 0);
+ static int write_bdev_label(
+ CephContext* cct, const std::string &path,
+ const bluestore_bdev_label_t& label, uint64_t disk_position = 0);
inline void log_latency(const char* name,
int idx,
{
for (auto& i : devs) {
bluestore_bdev_label_t label;
- int r = BlueStore::_read_bdev_label(cct, i, &label);
+ int r = BlueStore::read_bdev_label(cct, i, &label);
if (r < 0) {
cerr << "unable to read label for " << i << ": "
<< cpp_strerror(r) << std::endl;
}
for (auto& d : devs) {
bluestore_bdev_label_t label;
- int r = BlueStore::_read_bdev_label(cct, d, &label);
+ int r = BlueStore::read_bdev_label(cct, d, &label);
if (r < 0) {
cerr << "unable to read label for " << d << ": "
<< cpp_strerror(r) << std::endl;
}
else if (action == "prime-osd-dir") {
bluestore_bdev_label_t label;
- int r = BlueStore::_read_bdev_label(cct.get(), devs.front(), &label);
+ int r = BlueStore::read_bdev_label(cct.get(), devs.front(), &label);
if (r < 0) {
cerr << "failed to read label for " << devs.front() << ": "
<< cpp_strerror(r) << std::endl;
jf.open_object_section("devices");
for (auto& i : devs) {
bluestore_bdev_label_t label;
- int r = BlueStore::_read_bdev_label(cct.get(), i, &label);
+ int r = BlueStore::read_bdev_label(cct.get(), i, &label);
if (r < 0) {
cerr << "unable to read label for " << i << ": "
<< cpp_strerror(r) << std::endl;
}
else if (action == "set-label-key") {
bluestore_bdev_label_t label;
- int r = BlueStore::_read_bdev_label(cct.get(), devs.front(), &label);
+ int r = BlueStore::read_bdev_label(cct.get(), devs.front(), &label);
if (r < 0) {
cerr << "unable to read label for " << devs.front() << ": "
<< cpp_strerror(r) << std::endl;
} else {
label.meta[key] = value;
}
- r = BlueStore::_write_bdev_label(cct.get(), devs.front(), label);
+ r = BlueStore::write_bdev_label(cct.get(), devs.front(), label);
if (r < 0) {
cerr << "unable to write label for " << devs.front() << ": "
<< cpp_strerror(r) << std::endl;
}
else if (action == "rm-label-key") {
bluestore_bdev_label_t label;
- int r = BlueStore::_read_bdev_label(cct.get(), devs.front(), &label);
+ int r = BlueStore::read_bdev_label(cct.get(), devs.front(), &label);
if (r < 0) {
cerr << "unable to read label for " << devs.front() << ": "
<< cpp_strerror(r) << std::endl;
exit(EXIT_FAILURE);
}
label.meta.erase(key);
- r = BlueStore::_write_bdev_label(cct.get(), devs.front(), label);
+ r = BlueStore::write_bdev_label(cct.get(), devs.front(), label);
if (r < 0) {
cerr << "unable to write label for " << devs.front() << ": "
<< cpp_strerror(r) << std::endl;