]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
os/bluestore: Add improved printer for Extent
authorAdam Kupczyk <akupczyk@ibm.com>
Wed, 18 Oct 2023 14:18:49 +0000 (14:18 +0000)
committerAdam Kupczyk <akupczyk@ibm.com>
Wed, 7 Aug 2024 10:47:50 +0000 (10:47 +0000)
Modify Extent similar to Blob, so that one can use improved Blob printing
when printing extents.

Signed-off-by: Adam Kupczyk <akupczyk@ibm.com>
src/os/bluestore/BlueStore.h
src/os/bluestore/BlueStore_debug.cc

index 86961bc1af080fc6379dbfc870798d15eaecc2a5..86cfdbebc0efec993938664ce38e0ae48cbc44f1 100644 (file)
@@ -274,6 +274,17 @@ public:
     virtual ~AioContext() {}
   };
 
+  struct printer {
+    static constexpr uint8_t ptr = 1;   // pointer to Blob
+    static constexpr uint8_t nick = 2;  // a nickname of this Blob
+    static constexpr uint8_t disk = 4;  // disk allocations of Blob
+    static constexpr uint8_t sdisk = 8; // shortened version of disk allocaitons
+    static constexpr uint8_t use = 16;  // use tracker
+    static constexpr uint8_t suse = 32; // shortened use tracker
+    static constexpr uint8_t chk = 64;  // checksum, full dump
+    static constexpr uint8_t schk = 128; // only base checksum info
+  };
+
   /// cached buffer
   struct Buffer {
     MEMPOOL_CLASS_HELPERS();
@@ -637,19 +648,11 @@ public:
 
     void dump(ceph::Formatter* f) const;
     friend std::ostream& operator<<(std::ostream& out, const Blob &b);
-    struct printer {
+    struct printer : public BlueStore::printer {
       const Blob& blob;
       uint8_t mode;
       printer(const Blob& blob, uint8_t mode)
       :blob(blob), mode(mode) {}
-      static constexpr uint8_t ptr = 1;    //pointer to Blob
-      static constexpr uint8_t nick = 2;   //a nickname of this Blob
-      static constexpr uint8_t disk = 4;   //disk allocations of Blob
-      static constexpr uint8_t sdisk = 8;  //shortened version of disk allocaitons
-      static constexpr uint8_t use = 16;   //use tracker
-      static constexpr uint8_t suse = 32;  //shortened use tracker
-      static constexpr uint8_t chk = 64;   //checksum, full dump
-      static constexpr uint8_t schk = 128; //only base checksum info
     };
     friend std::ostream& operator<<(std::ostream& out, const printer &p);
     printer print(uint8_t mode) const {
@@ -859,6 +862,16 @@ public:
        blob->get_cache()->rm_extent();
       }
     }
+    struct printer : public BlueStore::printer {
+      const Extent& ext;
+      uint8_t mode;
+      printer(const Extent& ext, uint8_t mode)
+      :ext(ext), mode(mode) {}
+    };
+    friend std::ostream& operator<<(std::ostream& out, const printer &p);
+    printer print(uint8_t mode) const {
+      return printer(*this, mode);
+    }
 
     void dump(ceph::Formatter* f) const;
 
index 77bc04d5bb32f62cd1526972f23b18add36718c6..add6dcf5128e15c95962262529a85f1109b43dc5 100644 (file)
@@ -82,7 +82,7 @@ std::ostream &operator<<(std::ostream &out, const maybe_K &k) {
 
 std::ostream& operator<<(std::ostream& out, const BlueStore::Blob::printer &p)
 {
-  using P = BlueStore::Blob::printer;
+  using P = BlueStore::printer;
   out << "Blob(";
   if (p.mode & P::ptr) {
     out << &p.blob << " ";
@@ -214,3 +214,10 @@ std::ostream& operator<<(std::ostream& out, const BlueStore::Blob::printer &p)
   return out;
 }
 
+std::ostream& operator<<(std::ostream& out, const BlueStore::Extent::printer &p)
+{
+  out << std::hex << "0x" << p.ext.logical_offset << "~" << p.ext.length
+    << ": 0x" << p.ext.blob_offset << "~" << p.ext.length << std::dec
+       << " " << p.ext.blob->print(p.mode);
+  return out;
+}