auto &pending_version = static_cast<this_type_t&>(*copy_dest);
auto it = pending_version.begin();
while (it != pending_version.end() && iter != this->end()) {
- if (auto child = pending_version.children[it->get_offset()];
- (is_valid_child_ptr(child) &&
- (pending_version.is_pending() || child->_is_pending_io()))) {
+ if (it->get_val().is_relative()) {
+ // skip the ones that the pending version is also modifying
it++;
continue;
}
iter++;
continue;
}
- if (auto child = pending_version.children[it->get_offset()];
- is_valid_child_ptr(child) &&
- (pending_version.is_pending() || child->_is_pending_io())) {
+ if (it->get_val().pladdr.is_paddr() &&
+ it->get_val().pladdr.get_paddr().is_relative()) {
+ // skip the ones that the pending version is also modifying
it++;
continue;
}
#ifndef NDEBUG
for (auto ©_dest : copy_dests.dests_by_key) {
auto &pending_version = static_cast<LBALeafNode&>(*copy_dest);
- ceph_assert(pending_version.is_pending());
+ assert(pending_version.is_pending());
}
#endif
this->merge_content_to(t, copy_dests.dests_by_key);