]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/os/seastore/seastore_types: introduce and use paddr_t::is_absolute_segmented...
authorYingxin Cheng <yingxin.cheng@intel.com>
Wed, 23 Apr 2025 06:37:43 +0000 (14:37 +0800)
committerYingxin Cheng <yingxin.cheng@intel.com>
Thu, 24 Apr 2025 01:29:44 +0000 (09:29 +0800)
Signed-off-by: Yingxin Cheng <yingxin.cheng@intel.com>
src/crimson/os/seastore/async_cleaner.cc
src/crimson/os/seastore/cache.cc
src/crimson/os/seastore/journal/segmented_journal.cc
src/crimson/os/seastore/seastore_types.h
src/crimson/os/seastore/transaction.h

index 64e6749562e53071d03e55185a778c7977733eb7..60e2635c3cff9043785c901de004c2b2b2b5b5fc 100644 (file)
@@ -1524,7 +1524,8 @@ bool SegmentCleaner::check_usage()
       if (paddr.get_addr_type() == paddr_types_t::SEGMENT) {
         if (is_backref_node(type)) {
          assert(laddr == L_ADDR_NULL);
-         assert(backref_key != P_ADDR_NULL);
+         assert(backref_key.is_absolute_segmented()
+                 || backref_key == P_ADDR_MIN);
           tracker->allocate(
             paddr.as_seg_paddr().get_segment_id(),
             paddr.as_seg_paddr().get_segment_off(),
@@ -1832,7 +1833,8 @@ bool RBMCleaner::check_usage()
        if (rbm->get_device_id() == paddr.get_device_id()) {
          if (is_backref_node(type)) {
            assert(laddr == L_ADDR_NULL);
-           assert(backref_key != P_ADDR_NULL);
+           assert(backref_key.is_absolute_random_block()
+                  || backref_key == P_ADDR_MIN);
            tracker.allocate(
              paddr,
              len);
index 2011dd3b2df5fd2c3ebc075405530dcb76ffc029..3c224137f0dc7d882522fc8d313bf8fdfccb2526 100644 (file)
@@ -1937,8 +1937,7 @@ Cache::replay_delta(
    * safetly skip these deltas because the extent must already
    * have been rewritten.
    */
-  if (delta.paddr != P_ADDR_NULL &&
-      delta.paddr.get_addr_type() == paddr_types_t::SEGMENT) {
+  if (delta.paddr.is_absolute_segmented()) {
     auto& seg_addr = delta.paddr.as_seg_paddr();
     auto seg_info = get_segment_info(seg_addr.get_segment_id());
     if (seg_info) {
index 67c0b3fb8ac01e29430c21bff7a20d245229aa1c..0bef08f8bd7903b15b743a5f07c1705a6785783f 100644 (file)
@@ -111,7 +111,7 @@ SegmentedJournal::prep_replay_segments(
     auto journal_tail = trimmer.get_journal_tail();
     auto journal_tail_paddr = journal_tail.offset;
     ceph_assert(journal_tail != JOURNAL_SEQ_NULL);
-    ceph_assert(journal_tail_paddr != P_ADDR_NULL);
+    ceph_assert(journal_tail_paddr.is_absolute_segmented());
     auto from = std::find_if(
       segments.begin(),
       segments.end(),
index 33e08414e6b90ed678b5ccfec35167f574ba3207..5871c2f51ea0c112a6ab67e5fc606d44c7b24b43 100644 (file)
@@ -651,6 +651,14 @@ public:
     return get_addr_type() != paddr_types_t::RESERVED;
   }
 
+  bool is_absolute_random_block() const {
+    return get_addr_type() == paddr_types_t::RANDOM_BLOCK;
+  }
+
+  bool is_absolute_segmented() const {
+    return get_addr_type() == paddr_types_t::SEGMENT;
+  }
+
   bool is_fake() const {
     return get_device_id() == DEVICE_ID_FAKE;
   }
index 514a6fc58fba28b70154800c416c6efea2e797ab..e217c54f79ddc8fc76788747ff9b84129001b251 100644 (file)
@@ -184,7 +184,7 @@ public:
       delayed_temp_offset += ref->get_length();
       delayed_alloc_list.emplace_back(ref);
       fresh_block_stats.increment(ref->get_length());
-    } else if (ref->get_paddr().is_absolute()) {
+    } else if (ref->get_paddr().is_absolute_random_block()) {
       pre_alloc_list.emplace_back(ref);
       fresh_block_stats.increment(ref->get_length());
     } else {
@@ -237,7 +237,7 @@ public:
   }
 
   void mark_inplace_rewrite_extent_ool(LogicalCachedExtentRef ref) {
-    assert(ref->get_paddr().is_absolute());
+    assert(ref->get_paddr().is_absolute_random_block());
     assert(!ref->is_inline());
     inplace_ool_block_list.push_back(ref);
   }
@@ -245,7 +245,7 @@ public:
   void add_inplace_rewrite_extent(CachedExtentRef ref) {
    ceph_assert(!is_weak());
    ceph_assert(ref);
-   ceph_assert(ref->get_paddr().is_absolute());
+   ceph_assert(ref->get_paddr().is_absolute_random_block());
    assert(ref->state == CachedExtent::extent_state_t::DIRTY);
    pre_inplace_rewrite_list.emplace_back(ref->cast<LogicalCachedExtent>());
   }