From: Xuehan Xu Date: Mon, 6 Oct 2025 04:00:07 +0000 (+0800) Subject: crimson/os/seastore/lba_mapping: don't allow classes above X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=8d2e1fbf62cddcb3f236194a4cf0ddd31016a4a2;p=ceph-ci.git crimson/os/seastore/lba_mapping: don't allow classes above TransactionManager to retrieve lba mappings' paddrs. Signed-off-by: Xuehan Xu --- diff --git a/src/crimson/os/seastore/lba_mapping.h b/src/crimson/os/seastore/lba_mapping.h index 92706ab9037..9c81a92808a 100644 --- a/src/crimson/os/seastore/lba_mapping.h +++ b/src/crimson/os/seastore/lba_mapping.h @@ -8,6 +8,14 @@ #include "crimson/os/seastore/lba/lba_btree_node.h" #include "crimson/os/seastore/logical_child_node.h" +class transaction_manager_test_t; +class btree_lba_manager_test; +class tm_single_device_intergrity_check_test_t; +class tm_single_device_test_t; +class tm_multi_device_test_t; +class tm_multi_tier_device_test_t; +class tm_random_block_device_test_t; + namespace crimson::os::seastore { namespace lba { @@ -126,12 +134,6 @@ public: return direct_cursor->get_length(); } - paddr_t get_val() const { - assert(is_linked_direct()); - assert(!direct_cursor->is_end()); - return direct_cursor->get_paddr(); - } - checksum_t get_checksum() const { assert(is_linked_direct()); assert(!direct_cursor->is_end()); @@ -197,8 +199,21 @@ public: private: friend lba::BtreeLBAManager; friend class TransactionManager; + friend class ::transaction_manager_test_t; + friend class ::btree_lba_manager_test; + friend class ::tm_single_device_intergrity_check_test_t; + friend class ::tm_single_device_test_t; + friend class ::tm_multi_device_test_t; + friend class ::tm_multi_tier_device_test_t; + friend class ::tm_random_block_device_test_t; friend std::ostream &operator<<(std::ostream&, const LBAMapping&); + paddr_t get_val() const { + assert(is_linked_direct()); + assert(!direct_cursor->is_end()); + return direct_cursor->get_paddr(); + } + LBACursor& get_effective_cursor() { if (is_indirect()) { return *indirect_cursor; diff --git a/src/crimson/os/seastore/object_data_handler.cc b/src/crimson/os/seastore/object_data_handler.cc index 828d4a94b4c..680cb0f5f17 100644 --- a/src/crimson/os/seastore/object_data_handler.cc +++ b/src/crimson/os/seastore/object_data_handler.cc @@ -1496,7 +1496,7 @@ ObjectDataHandler::read_ret ObjectDataHandler::read( extent_len_t read_len = l_current_end.get_byte_distance(l_current); - if (pin.get_val().is_zero()) { + if (pin.is_zero_reserved()) { DEBUGT("got {}~0x{:x} from zero-pin {}~0x{:x}", ctx.t, l_current, @@ -1598,7 +1598,7 @@ ObjectDataHandler::fiemap_ret ObjectDataHandler::fiemap( ceph_assert(pins.size() >= 1); ceph_assert(pins.front().get_key() <= l_start); for (auto &&i: pins) { - if (!(i.get_val().is_zero())) { + if (!i.is_zero_reserved()) { laddr_offset_t ret_left = std::max(laddr_offset_t(i.get_key(), 0), l_start); laddr_offset_t ret_right = std::min( i.get_key() + i.get_length(),