]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
os/bluestore: Add read/write_bdev_label functions
authorAdam Kupczyk <akupczyk@ibm.com>
Tue, 13 Feb 2024 12:46:38 +0000 (12:46 +0000)
committerPere Diaz Bou <pere-altea@hotmail.com>
Fri, 23 Aug 2024 09:49:25 +0000 (11:49 +0200)
Made _read/_write_bdev_label private.
Instead created read/write_bdev_label.

Signed-off-by: Adam Kupczyk <akupczyk@ibm.com>
(cherry picked from commit 9b30da39a0dd1afc9c50303c4057f749b15de46a)

src/os/bluestore/BlueStore.cc
src/os/bluestore/BlueStore.h
src/os/bluestore/bluestore_tool.cc

index 51a112d952e064cf8f334eb0fc9b5774aefd92af..0dd05577772023ce9556467964d5d0c28bb656b2 100644 (file)
@@ -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<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;
index ca705fc710f1755f88d87258dc025454e65fdd92..d8faf130651a24faa87f2f23418e58389c944678 100644 (file)
@@ -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<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,
index 224334706da8c457ad11ea644f137ec6ab70864e..0d2b3e8f442c17ef52c36f70459d8d3de07ba355 100644 (file)
@@ -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;