Skip to content

Commit 027be57

Browse files
committed
crimson/os/seastore/../btree_lba_manager: nextent should be valid iff unlinked yet
Clarify the facts. Signed-off-by: Yingxin Cheng <[email protected]>
1 parent cbc2439 commit 027be57

File tree

1 file changed

+7
-5
lines changed

1 file changed

+7
-5
lines changed

src/crimson/os/seastore/lba_manager/btree/btree_lba_manager.cc

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -875,6 +875,7 @@ BtreeLBAManager::_update_mapping(
875875

876876
auto ret = f(iter.get_val());
877877
if (ret.refcount == 0) {
878+
assert(nextent == nullptr);
878879
return btree.remove(
879880
c,
880881
iter
@@ -890,15 +891,16 @@ BtreeLBAManager::_update_mapping(
890891
iter,
891892
ret
892893
).si_then([c, ret, nextent](auto iter) {
893-
// child-ptr may already be correct,
894-
// see LBAManager::update_mappings()
895-
if (nextent && !nextent->has_parent_tracker()) {
894+
if (nextent) {
895+
// nextent is provided iff unlinked,
896+
// also see TM::rewrite_logical_extent()
897+
assert(!nextent->has_parent_tracker());
896898
iter.get_leaf_node()->update_child_ptr(
897899
iter.get_leaf_pos(), nextent);
898900
}
899901
assert(!nextent ||
900-
(nextent->has_parent_tracker()
901-
&& nextent->get_parent_node().get() == iter.get_leaf_node().get()));
902+
(nextent->has_parent_tracker() &&
903+
nextent->get_parent_node().get() == iter.get_leaf_node().get()));
902904
return update_mapping_ret_bare_t{
903905
std::move(ret),
904906
iter.get_pin(c)

0 commit comments

Comments
 (0)