From: Adam Kupczyk Date: Wed, 18 Oct 2023 14:18:49 +0000 (+0000) Subject: os/bluestore: Add improved printer for Extent X-Git-Tag: v20.0.0~1286^2~7 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=03dbd42c564aaac3a883df055e797b8c106de915;p=ceph.git os/bluestore: Add improved printer for Extent Modify Extent similar to Blob, so that one can use improved Blob printing when printing extents. Signed-off-by: Adam Kupczyk --- diff --git a/src/os/bluestore/BlueStore.h b/src/os/bluestore/BlueStore.h index 86961bc1af08..86cfdbebc0ef 100644 --- a/src/os/bluestore/BlueStore.h +++ b/src/os/bluestore/BlueStore.h @@ -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; diff --git a/src/os/bluestore/BlueStore_debug.cc b/src/os/bluestore/BlueStore_debug.cc index 77bc04d5bb32..add6dcf5128e 100644 --- a/src/os/bluestore/BlueStore_debug.cc +++ b/src/os/bluestore/BlueStore_debug.cc @@ -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; +}