]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
crimson/os/seastore: cleanup, call paddr_t's explicit function where possible
authorYingxin Cheng <yingxin.cheng@intel.com>
Thu, 4 Aug 2022 14:09:03 +0000 (22:09 +0800)
committerYingxin Cheng <yingxin.cheng@intel.com>
Fri, 5 Aug 2022 04:04:03 +0000 (12:04 +0800)
Signed-off-by: Yingxin Cheng <yingxin.cheng@intel.com>
src/crimson/os/seastore/backref/btree_backref_manager.cc
src/crimson/os/seastore/btree/fixed_kv_btree.h
src/crimson/os/seastore/btree/fixed_kv_node.h
src/crimson/os/seastore/cached_extent.h
src/crimson/os/seastore/lba_manager/btree/lba_btree_node.h
src/crimson/os/seastore/seastore_types.h

index baafbb781f2872b7ea1cb0a69ecdf520455a198f..ee1859cbcbb270d17ae745c65ea157dfbf950bde 100644 (file)
@@ -104,7 +104,7 @@ BtreeBackrefManager::get_mappings(
          }
          TRACET("{}~{} got {}, {}, repeat ...",
                 c.trans, offset, end, pos.get_key(), pos.get_val());
-         ceph_assert((pos.get_key() + pos.get_val().len) > offset);
+         ceph_assert((pos.get_key().add_offset(pos.get_val().len)) > offset);
          ret.push_back(pos.get_pin());
          return BackrefBtree::iterate_repeat_ret_inner(
            interruptible::ready_future_marker{},
index 3c514adaa99047c0c0c0412d2668dd0450f28f1d..860703a9c3a624fce262d412f60eb24efb1c8e0a 100644 (file)
@@ -836,7 +836,8 @@ public:
        * against the real final address.
        */
       n_fixed_kv_extent->resolve_relative_addrs(
-        make_record_relative_paddr(0) - n_fixed_kv_extent->get_paddr());
+        make_record_relative_paddr(0).block_relative_to(
+          n_fixed_kv_extent->get_paddr()));
       
       SUBTRACET(
         seastore_fixedkv_tree,
index 5673de2512f785a38c27f194cc5bc1c4790c3b09..f193509f50e5419608675c15e8bace142c4a10a3 100644 (file)
@@ -243,7 +243,7 @@ struct FixedKVInternalNode
       for (auto i = from; i != to; ++i) {
        if (i->get_val().is_relative()) {
          assert(i->get_val().is_record_relative());
-         i->set_val(i->get_val() - this->get_paddr());
+         i->set_val(i->get_val().block_relative_to(this->get_paddr()));
        }
       }
     }
index ff3f66d877bc5a18ccc41c305f0dba036a8216a3..115d518e36f2f7800717ccfccef983f669305ced 100644 (file)
@@ -549,7 +549,7 @@ protected:
    */
   paddr_t maybe_generate_relative(paddr_t addr) {
     if (is_initial_pending() && addr.is_record_relative()) {
-      return addr - get_paddr();
+      return addr.block_relative_to(get_paddr());
     } else {
       ceph_assert(!addr.is_record_relative() || is_mutation_pending());
       return addr;
index f8fc2bff32bacc785e096640261da5a9cd12b95f..060163b6c326644f048a906ca47d2d1c8a84ece8 100644 (file)
@@ -201,7 +201,7 @@ struct LBALeafNode
        if (val.paddr.is_relative()) {
          auto val = i->get_val();
          assert(val.paddr.is_record_relative());
-         val.paddr = val.paddr - get_paddr();
+         val.paddr = val.paddr.block_relative_to(get_paddr());
          i->set_val(val);
        }
       }
index bd6e35fc5664ffe6faed65814e6cf7321653f769..e305ac533bb358a824c4636e81b0f9d8dd044771 100644 (file)
@@ -539,13 +539,14 @@ public:
   }
 
   /**
-   * operator-
+   * block_relative_to
    *
    * Only defined for record_relative paddr_ts.  Yields a
    * block_relative address.
    */
-  paddr_t operator-(paddr_t rhs) const;
+  paddr_t block_relative_to(paddr_t rhs) const;
 
+  // To be compatible with laddr_t operator+
   paddr_t operator+(seastore_off_t o) const {
     return add_offset(o);
   }
@@ -716,12 +717,10 @@ struct res_paddr_t : public paddr_t {
     return paddr_t::make_res_paddr(get_device_id(), off);
   }
 
-  paddr_t operator-(paddr_t rhs) const {
-    assert(rhs.is_relative() && is_relative());
-    assert(rhs.get_device_id() == get_device_id());
-    auto &r = rhs.as_res_paddr();
-    auto off = get_seastore_off() - r.get_seastore_off();
-    assert(r.get_seastore_off() >= 0 ?
+  paddr_t block_relative_to(const res_paddr_t &rhs) const {
+    assert(rhs.is_record_relative() && is_record_relative());
+    auto off = get_seastore_off() - rhs.get_seastore_off();
+    assert(rhs.get_seastore_off() >= 0 ?
            off <= get_seastore_off() : off > get_seastore_off());
     return paddr_t::make_res_paddr(DEVICE_ID_BLOCK_RELATIVE, off);
   }
@@ -811,10 +810,8 @@ inline paddr_t paddr_t::add_relative(paddr_t o) const {
   return add_offset(res_o.get_seastore_off());
 }
 
-inline paddr_t paddr_t::operator-(paddr_t rhs) const {
-  PADDR_OPERATION(paddr_types_t::RESERVED, res_paddr_t, operator-(rhs))
-  ceph_assert(0 == "not supported type");
-  return P_ADDR_NULL;
+inline paddr_t paddr_t::block_relative_to(paddr_t rhs) const {
+  return as_res_paddr().block_relative_to(rhs.as_res_paddr());
 }
 
 struct __attribute((packed)) paddr_le_t {