From: Yingxin Cheng Date: Wed, 12 Jan 2022 05:04:14 +0000 (+0800) Subject: crimson/os/seastore/seastore_types: pretty print data structures X-Git-Tag: v18.0.0~1563^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=df8e77b530f3de0b0494f6ed376e88c52904d046;p=ceph.git crimson/os/seastore/seastore_types: pretty print data structures Signed-off-by: Yingxin Cheng --- diff --git a/src/crimson/os/seastore/seastore_types.cc b/src/crimson/os/seastore/seastore_types.cc index a68aa4de8be2..5846fa8b5858 100644 --- a/src/crimson/os/seastore/seastore_types.cc +++ b/src/crimson/os/seastore/seastore_types.cc @@ -69,10 +69,10 @@ std::ostream &operator<<(std::ostream &out, const paddr_t &rhs) std::ostream &operator<<(std::ostream &out, const journal_seq_t &seq) { - return out << "journal_seq_t(segment_seq=" - << seq.segment_seq << ", offset=" - << seq.offset - << ")"; + return out << "journal_seq_t(" + << "segment_seq=" << seq.segment_seq + << ", offset=" << seq.offset + << ")"; } std::ostream &operator<<(std::ostream &out, extent_types_t t) @@ -152,7 +152,7 @@ std::ostream &operator<<(std::ostream &out, const segment_header_t &header) { return out << "segment_header_t(" << "segment_seq=" << header.journal_segment_seq - << ", physical_segment_id=" << header.physical_segment_id + << ", segment_id=" << header.physical_segment_id << ", journal_tail=" << header.journal_tail << ", segment_nonce=" << header.segment_nonce << ", out-of-line=" << header.out_of_line @@ -179,6 +179,34 @@ void record_size_t::account(const delta_info_t& delta) plain_mdlength += ceph::encoded_sizeof(delta); } +std::ostream &operator<<(std::ostream& out, const record_size_t& rsize) +{ + return out << "record_size_t(" + << "raw_md=" << rsize.get_raw_mdlength() + << ", data=" << rsize.dlength + << ")"; +} + +std::ostream &operator<<(std::ostream& out, const record_t& r) +{ + return out << "record_t(" + << "num_extents=" << r.extents.size() + << ", num_deltas=" << r.deltas.size() + << ")"; +} + +std::ostream& operator<<(std::ostream& out, const record_group_header_t& h) +{ + return out << "record_group_header_t(" + << "num_records=" << h.records + << ", mdlength=" << h.mdlength + << ", dlength=" << h.dlength + << ", nonce=" << h.segment_nonce + << ", committed_to=" << h.committed_to + << ", data_crc=" << h.data_crc + << ")"; +} + extent_len_t record_group_size_t::get_raw_mdlength() const { return plain_mdlength + @@ -199,6 +227,24 @@ void record_group_size_t::account( block_size = _block_size; } +std::ostream& operator<<(std::ostream& out, const record_group_size_t& size) +{ + return out << "record_group_size_t(" + << "raw_md=" << size.get_raw_mdlength() + << ", data=" << size.dlength + << ", block_size=" << size.block_size + << ", fullness=" << size.get_fullness() + << ")"; +} + +std::ostream& operator<<(std::ostream& out, const record_group_t& rg) +{ + return out << "record_group_t(" + << "num_records=" << rg.records.size() + << ", " << rg.size + << ")"; +} + ceph::bufferlist encode_record( record_t&& record, extent_len_t block_size, @@ -516,6 +562,22 @@ blk_paddr_t convert_paddr_to_blk_paddr(paddr_t addr, size_t block_size, (block_size * blocks_per_segment) + s.get_segment_off()); } +std::ostream& operator<<(std::ostream& out, const write_result_t& w) +{ + return out << "write_result_t(" + << "start=" << w.start_seq + << ", length=" << w.length + << ")"; +} + +std::ostream& operator<<(std::ostream& out, const record_locator_t& l) +{ + return out << "record_locator_t(" + << "block_base=" << l.record_block_base + << ", " << l.write_result + << ")"; +} + void scan_valid_records_cursor::emplace_record_group( const record_group_header_t& header, ceph::bufferlist&& md_bl) { @@ -532,4 +594,14 @@ void scan_valid_records_cursor::emplace_record_group( new_committed_to < seq); } +std::ostream& operator<<(std::ostream& out, const scan_valid_records_cursor& c) +{ + return out << "cursor(last_valid_header_found=" << c.last_valid_header_found + << ", seq=" << c.seq + << ", last_committed=" << c.last_committed + << ", pending_record_groups=" << c.pending_record_groups.size() + << ", num_consumed_records=" << c.num_consumed_records + << ")"; +} + } diff --git a/src/crimson/os/seastore/seastore_types.h b/src/crimson/os/seastore/seastore_types.h index 165419ef1f18..29ea8159d763 100644 --- a/src/crimson/os/seastore/seastore_types.h +++ b/src/crimson/os/seastore/seastore_types.h @@ -1230,6 +1230,7 @@ struct record_size_t { void account(const delta_info_t& delta); }; WRITE_EQ_OPERATORS_2(record_size_t, plain_mdlength, dlength); +std::ostream &operator<<(std::ostream&, const record_size_t&); struct record_t { std::vector extents; @@ -1272,6 +1273,7 @@ struct record_t { deltas.push_back(std::move(delta)); } }; +std::ostream &operator<<(std::ostream&, const record_t&); struct record_header_t { uint32_t deltas; // number of deltas @@ -1307,6 +1309,7 @@ struct record_group_header_t { DENC_FINISH(p); } }; +std::ostream& operator<<(std::ostream&, const record_group_header_t&); struct record_group_size_t { extent_len_t plain_mdlength = 0; // mdlength without the group header @@ -1351,6 +1354,7 @@ struct record_group_size_t { extent_len_t block_size); }; WRITE_EQ_OPERATORS_3(record_group_size_t, plain_mdlength, dlength, block_size); +std::ostream& operator<<(std::ostream&, const record_group_size_t&); struct record_group_t { std::vector records; @@ -1384,6 +1388,7 @@ struct record_group_t { size = {}; } }; +std::ostream& operator<<(std::ostream&, const record_group_t&); ceph::bufferlist encode_record( record_t&& record, @@ -1435,11 +1440,13 @@ struct write_result_t { return start_seq.add_offset(length); } }; +std::ostream& operator<<(std::ostream&, const write_result_t&); struct record_locator_t { paddr_t record_block_base; write_result_t write_result; }; +std::ostream& operator<<(std::ostream&, const record_locator_t&); /// scan segment for end incrementally struct scan_valid_records_cursor { @@ -1491,6 +1498,7 @@ struct scan_valid_records_cursor { journal_seq_t seq) : seq(seq) {} }; +std::ostream& operator<<(std::ostream&, const scan_valid_records_cursor&); inline const seg_paddr_t& paddr_t::as_seg_paddr() const { assert(get_addr_type() == addr_types_t::SEGMENT);