From: Samuel Just Date: Thu, 6 Aug 2020 04:30:34 +0000 (-0700) Subject: test/crimson/seastore: add fake paddr for better test debugging X-Git-Tag: v16.1.0~1438^2~4 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=5f70785fac1f4e6bc38eea439415037fe46382e7;p=ceph.git test/crimson/seastore: add fake paddr for better test debugging Signed-off-by: Samuel Just --- diff --git a/src/crimson/os/seastore/seastore_types.cc b/src/crimson/os/seastore/seastore_types.cc index b2ce3a76696..40c54455fd0 100644 --- a/src/crimson/os/seastore/seastore_types.cc +++ b/src/crimson/os/seastore/seastore_types.cc @@ -13,6 +13,8 @@ std::ostream &segment_to_stream(std::ostream &out, const segment_id_t &t) return out << "BLOCK_REL_SEG"; else if (t == RECORD_REL_SEG_ID) return out << "RECORD_REL_SEG"; + else if (t == FAKE_SEG_ID) + return out << "FAKE_SEG"; else return out << t; } diff --git a/src/crimson/os/seastore/seastore_types.h b/src/crimson/os/seastore/seastore_types.h index 90b753695d6..70f41ab20a5 100644 --- a/src/crimson/os/seastore/seastore_types.h +++ b/src/crimson/os/seastore/seastore_types.h @@ -28,6 +28,10 @@ constexpr segment_id_t RECORD_REL_SEG_ID = constexpr segment_id_t BLOCK_REL_SEG_ID = std::numeric_limits::max() - 3; +// for tests which generate fake paddrs +constexpr segment_id_t FAKE_SEG_ID = + std::numeric_limits::max() - 4; + std::ostream &segment_to_stream(std::ostream &, const segment_id_t &t); // Offset within a segment on disk, see SegmentManager @@ -151,6 +155,9 @@ constexpr paddr_t make_record_relative_paddr(segment_off_t off) { constexpr paddr_t make_block_relative_paddr(segment_off_t off) { return paddr_t{BLOCK_REL_SEG_ID, off}; } +constexpr paddr_t make_fake_paddr(segment_off_t off) { + return paddr_t{FAKE_SEG_ID, off}; +} struct paddr_le_t { ceph_le32 segment = init_le32(NULL_SEG_ID); diff --git a/src/test/crimson/seastore/test_btree_lba_manager.cc b/src/test/crimson/seastore/test_btree_lba_manager.cc index 264606975b1..f7aa4584603 100644 --- a/src/test/crimson/seastore/test_btree_lba_manager.cc +++ b/src/test/crimson/seastore/test_btree_lba_manager.cc @@ -147,6 +147,12 @@ struct btree_lba_manager_test : ); } + segment_off_t next_off = 0; + paddr_t get_paddr() { + next_off += block_size; + return make_fake_paddr(next_off); + } + auto alloc_mapping( test_transaction_t &t, laddr_t hint, @@ -258,13 +264,12 @@ TEST_F(btree_lba_manager_test, basic) { run_async([this] { laddr_t laddr = 0x12345678 * block_size; - paddr_t paddr = { 1, static_cast(block_size * 10) }; { // write initial mapping auto t = create_transaction(); check_mappings(t); // check in progress transaction sees mapping check_mappings(); // check concurrent does not - auto ret = alloc_mapping(t, laddr, block_size, paddr); + auto ret = alloc_mapping(t, laddr, block_size, get_paddr()); submit_test_transaction(std::move(t)); } check_mappings(); // check new transaction post commit sees it @@ -278,7 +283,7 @@ TEST_F(btree_lba_manager_test, force_split) auto t = create_transaction(); logger().debug("opened transaction"); for (unsigned j = 0; j < 5; ++j) { - auto ret = alloc_mapping(t, 0, block_size, P_ADDR_MIN); + auto ret = alloc_mapping(t, 0, block_size, get_paddr()); if ((i % 10 == 0) && (j == 3)) { check_mappings(t); check_mappings(); @@ -298,7 +303,7 @@ TEST_F(btree_lba_manager_test, force_split_merge) auto t = create_transaction(); logger().debug("opened transaction"); for (unsigned j = 0; j < 5; ++j) { - auto ret = alloc_mapping(t, 0, block_size, P_ADDR_MIN); + auto ret = alloc_mapping(t, 0, block_size, get_paddr()); // just to speed things up a bit if ((i % 100 == 0) && (j == 3)) { check_mappings(t);