From: Yingxin Cheng Date: Tue, 29 Sep 2020 07:30:02 +0000 (+0800) Subject: crimson/onode-staged-tree: fix extra_size during locate_split() X-Git-Tag: v16.1.0~359^2~24 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=1757afc98d92ae223c1d5b4c3bdacf77680a8232;p=ceph.git crimson/onode-staged-tree: fix extra_size during locate_split() Signed-off-by: Yingxin Cheng --- diff --git a/src/crimson/os/seastore/onode_manager/staged-fltree/stages/stage.h b/src/crimson/os/seastore/onode_manager/staged-fltree/stages/stage.h index e9c533e02ea..1bb69e78a3c 100644 --- a/src/crimson/os/seastore/onode_manager/staged-fltree/stages/stage.h +++ b/src/crimson/os/seastore/onode_manager/staged-fltree/stages/stage.h @@ -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(),