Skip to content

Commit 71e6beb

Browse files
authored
Merge pull request ceph#56028 from cyx1231st/wip-seastore-cleanup-lba
crimson/os/seastore: cleanups around lba parent-child pointer Reviewed-by: Xuehan Xu <[email protected]>
2 parents e21eae3 + 2d2df50 commit 71e6beb

File tree

10 files changed

+173
-230
lines changed

10 files changed

+173
-230
lines changed

src/crimson/os/seastore/btree/fixed_kv_btree.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -579,12 +579,12 @@ class FixedKVBtree {
579579
if constexpr (
580580
std::is_base_of_v<typename internal_node_t::base_t, child_node_t>)
581581
{
582-
assert(!c.cache.query_cache(i->get_val(), nullptr));
582+
assert(!c.cache.test_query_cache(i->get_val()));
583583
} else {
584584
if constexpr (leaf_has_children) {
585585
assert(i->get_val().pladdr.is_paddr()
586-
? (bool)!c.cache.query_cache(
587-
i->get_val().pladdr.get_paddr(), nullptr)
586+
? (bool)!c.cache.test_query_cache(
587+
i->get_val().pladdr.get_paddr())
588588
: true);
589589
}
590590
}

src/crimson/os/seastore/btree/fixed_kv_node.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -430,6 +430,8 @@ struct FixedKVNode : ChildableCachedExtent {
430430
// the foreign key is preserved
431431
if (!child) {
432432
child = source.children[foreign_it.get_offset()];
433+
// child can be either valid if present, nullptr if absent,
434+
// or RESERVATION_PTR.
433435
}
434436
foreign_it++;
435437
local_it++;

src/crimson/os/seastore/cache.cc

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1850,7 +1850,7 @@ Cache::replay_delta(
18501850
};
18511851
auto extent_fut = (delta.pversion == 0 ?
18521852
// replay is not included by the cache hit metrics
1853-
_get_extent_by_type(
1853+
do_get_caching_extent_by_type(
18541854
delta.type,
18551855
delta.paddr,
18561856
delta.laddr,
@@ -2012,7 +2012,8 @@ Cache::get_root_ret Cache::get_root(Transaction &t)
20122012
}
20132013
}
20142014

2015-
Cache::get_extent_ertr::future<CachedExtentRef> Cache::_get_extent_by_type(
2015+
Cache::get_extent_ertr::future<CachedExtentRef>
2016+
Cache::do_get_caching_extent_by_type(
20162017
extent_types_t type,
20172018
paddr_t offset,
20182019
laddr_t laddr,
@@ -2034,55 +2035,55 @@ Cache::get_extent_ertr::future<CachedExtentRef> Cache::_get_extent_by_type(
20342035
ceph_assert(0 == "ROOT is never directly read");
20352036
return get_extent_ertr::make_ready_future<CachedExtentRef>();
20362037
case extent_types_t::BACKREF_INTERNAL:
2037-
return get_extent<backref::BackrefInternalNode>(
2038+
return do_get_caching_extent<backref::BackrefInternalNode>(
20382039
offset, length, p_metric_key, std::move(extent_init_func), std::move(on_cache)
20392040
).safe_then([](auto extent) {
20402041
return CachedExtentRef(extent.detach(), false /* add_ref */);
20412042
});
20422043
case extent_types_t::BACKREF_LEAF:
2043-
return get_extent<backref::BackrefLeafNode>(
2044+
return do_get_caching_extent<backref::BackrefLeafNode>(
20442045
offset, length, p_metric_key, std::move(extent_init_func), std::move(on_cache)
20452046
).safe_then([](auto extent) {
20462047
return CachedExtentRef(extent.detach(), false /* add_ref */);
20472048
});
20482049
case extent_types_t::LADDR_INTERNAL:
2049-
return get_extent<lba_manager::btree::LBAInternalNode>(
2050+
return do_get_caching_extent<lba_manager::btree::LBAInternalNode>(
20502051
offset, length, p_metric_key, std::move(extent_init_func), std::move(on_cache)
20512052
).safe_then([](auto extent) {
20522053
return CachedExtentRef(extent.detach(), false /* add_ref */);
20532054
});
20542055
case extent_types_t::LADDR_LEAF:
2055-
return get_extent<lba_manager::btree::LBALeafNode>(
2056+
return do_get_caching_extent<lba_manager::btree::LBALeafNode>(
20562057
offset, length, p_metric_key, std::move(extent_init_func), std::move(on_cache)
20572058
).safe_then([](auto extent) {
20582059
return CachedExtentRef(extent.detach(), false /* add_ref */);
20592060
});
20602061
case extent_types_t::OMAP_INNER:
2061-
return get_extent<omap_manager::OMapInnerNode>(
2062+
return do_get_caching_extent<omap_manager::OMapInnerNode>(
20622063
offset, length, p_metric_key, std::move(extent_init_func), std::move(on_cache)
20632064
).safe_then([](auto extent) {
20642065
return CachedExtentRef(extent.detach(), false /* add_ref */);
20652066
});
20662067
case extent_types_t::OMAP_LEAF:
2067-
return get_extent<omap_manager::OMapLeafNode>(
2068+
return do_get_caching_extent<omap_manager::OMapLeafNode>(
20682069
offset, length, p_metric_key, std::move(extent_init_func), std::move(on_cache)
20692070
).safe_then([](auto extent) {
20702071
return CachedExtentRef(extent.detach(), false /* add_ref */);
20712072
});
20722073
case extent_types_t::COLL_BLOCK:
2073-
return get_extent<collection_manager::CollectionNode>(
2074+
return do_get_caching_extent<collection_manager::CollectionNode>(
20742075
offset, length, p_metric_key, std::move(extent_init_func), std::move(on_cache)
20752076
).safe_then([](auto extent) {
20762077
return CachedExtentRef(extent.detach(), false /* add_ref */);
20772078
});
20782079
case extent_types_t::ONODE_BLOCK_STAGED:
2079-
return get_extent<onode::SeastoreNodeExtent>(
2080+
return do_get_caching_extent<onode::SeastoreNodeExtent>(
20802081
offset, length, p_metric_key, std::move(extent_init_func), std::move(on_cache)
20812082
).safe_then([](auto extent) {
20822083
return CachedExtentRef(extent.detach(), false /* add_ref */);
20832084
});
20842085
case extent_types_t::OBJECT_DATA_BLOCK:
2085-
return get_extent<ObjectDataBlock>(
2086+
return do_get_caching_extent<ObjectDataBlock>(
20862087
offset, length, p_metric_key, std::move(extent_init_func), std::move(on_cache)
20872088
).safe_then([](auto extent) {
20882089
return CachedExtentRef(extent.detach(), false /* add_ref */);
@@ -2091,13 +2092,13 @@ Cache::get_extent_ertr::future<CachedExtentRef> Cache::_get_extent_by_type(
20912092
ceph_assert(0 == "impossible");
20922093
return get_extent_ertr::make_ready_future<CachedExtentRef>();
20932094
case extent_types_t::TEST_BLOCK:
2094-
return get_extent<TestBlock>(
2095+
return do_get_caching_extent<TestBlock>(
20952096
offset, length, p_metric_key, std::move(extent_init_func), std::move(on_cache)
20962097
).safe_then([](auto extent) {
20972098
return CachedExtentRef(extent.detach(), false /* add_ref */);
20982099
});
20992100
case extent_types_t::TEST_BLOCK_PHYSICAL:
2100-
return get_extent<TestBlockPhysical>(
2101+
return do_get_caching_extent<TestBlockPhysical>(
21012102
offset, length, p_metric_key, std::move(extent_init_func), std::move(on_cache)
21022103
).safe_then([](auto extent) {
21032104
return CachedExtentRef(extent.detach(), false /* add_ref */);

0 commit comments

Comments
 (0)