]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/onode-staged-tree: fix extra_size during locate_split()
authorYingxin Cheng <yingxin.cheng@intel.com>
Tue, 29 Sep 2020 07:30:02 +0000 (15:30 +0800)
committerYingxin Cheng <yingxin.cheng@intel.com>
Tue, 1 Dec 2020 04:50:54 +0000 (12:50 +0800)
Signed-off-by: Yingxin Cheng <yingxin.cheng@intel.com>
src/crimson/os/seastore/onode_manager/staged-fltree/stages/stage.h

index e9c533e02ea799cb32c35d7fd0a65732b6a20805..1bb69e78a3cf2f8f43b893f9fc9b174f7df3a423 100644 (file)
@@ -1431,6 +1431,11 @@ struct staged {
     iterator_t& split_iter = split_at.get();
     current_size = split_iter.seek_split(current_size, extra_size, target_size);
     assert(!split_iter.is_end());
+    if (split_iter.index() == 0) {
+      extra_size += iterator_t::header_size();
+    } else {
+      extra_size = 0;
+    }
     if constexpr (!IS_BOTTOM) {
       NXT_STAGE_T::recursively_locate_split(
           current_size, extra_size + split_iter.size_to_nxt(),
@@ -1451,6 +1456,11 @@ struct staged {
           current_size, extra_size, target_size,
           insert_index, insert_size, is_insert_left);
       assert(is_insert_left.has_value());
+      if (split_iter.index() == 0) {
+        extra_size += iterator_t::header_size();
+      } else {
+        extra_size = 0;
+      }
       if (*is_insert_left == false && split_iter.index() == insert_index) {
         // split_iter can be end
         // found the lower-bound of target_size
@@ -1461,11 +1471,6 @@ struct staged {
         // Look into the next stage to identify the target_size lower-bound w/o
         // insert effect.
         assert(!split_iter.is_end());
-        if (split_iter.index() == 0) {
-          extra_size += iterator_t::header_size();
-        } else {
-          extra_size = 0;
-        }
         if constexpr (!IS_BOTTOM) {
           NXT_STAGE_T::recursively_locate_split(
               current_size, extra_size + split_iter.size_to_nxt(),