From: Adam Kupczyk Date: Tue, 13 Feb 2024 12:46:38 +0000 (+0000) Subject: os/bluestore: Add read/write_bdev_label functions X-Git-Tag: testing/wip-rishabh-testing-20240908.191708-squid-debug~33^2~10 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=bf8e253bcee765bb21d3811694d8fc84600347fc;p=ceph-ci.git os/bluestore: Add read/write_bdev_label functions Made _read/_write_bdev_label private. Instead created read/write_bdev_label. Signed-off-by: Adam Kupczyk (cherry picked from commit 9b30da39a0dd1afc9c50303c4057f749b15de46a) --- diff --git a/src/os/bluestore/BlueStore.cc b/src/os/bluestore/BlueStore.cc index 51a112d952e..0dd05577772 100644 --- a/src/os/bluestore/BlueStore.cc +++ b/src/os/bluestore/BlueStore.cc @@ -6838,6 +6838,36 @@ int BlueStore::_check_main_bdev_label() return 0; } +int BlueStore::read_bdev_label( + CephContext* cct, const std::string &path, + bluestore_bdev_label_t *label, uint64_t disk_position) +{ + unique_ptr 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 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; diff --git a/src/os/bluestore/BlueStore.h b/src/os/bluestore/BlueStore.h index ca705fc710f..d8faf130651 100644 --- a/src/os/bluestore/BlueStore.h +++ b/src/os/bluestore/BlueStore.h @@ -2766,7 +2766,7 @@ public: std::lock_guard l(deferred_lock); return deferred_last_submitted; } - +private: static int _write_bdev_label( CephContext* cct, BlockDevice* bdev, @@ -2776,7 +2776,6 @@ public: 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(); @@ -3428,6 +3427,12 @@ public: return _write_bdev_label(cct, bdev, path, label, std::vector({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, diff --git a/src/os/bluestore/bluestore_tool.cc b/src/os/bluestore/bluestore_tool.cc index 224334706da..0d2b3e8f442 100644 --- a/src/os/bluestore/bluestore_tool.cc +++ b/src/os/bluestore/bluestore_tool.cc @@ -79,7 +79,7 @@ const char* find_device_path( { 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; @@ -111,7 +111,7 @@ void parse_devices( } 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; @@ -625,7 +625,7 @@ int main(int argc, char **argv) } 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; @@ -679,7 +679,7 @@ int main(int argc, char **argv) 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; @@ -694,7 +694,7 @@ int main(int argc, char **argv) } 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; @@ -716,7 +716,7 @@ int main(int argc, char **argv) } 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; @@ -725,7 +725,7 @@ int main(int argc, char **argv) } 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; @@ -736,7 +736,7 @@ int main(int argc, char **argv) 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;