]>
git.proxmox.com Git - ceph.git/blob - ceph/src/crimson/os/seastore/onode_manager/staged-fltree/node_extent_manager.cc
1 // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:nil -*-
2 // vim: ts=8 sw=2 smarttab
4 #include "node_extent_manager.h"
6 #include "node_extent_manager/dummy.h"
7 #include "node_extent_manager/seastore.h"
8 #include "stages/node_stage_layout.h"
10 namespace crimson::os::seastore::onode
{
12 std::pair
<node_type_t
, field_type_t
> NodeExtent::get_types() const {
13 const auto header
= reinterpret_cast<const node_header_t
*>(get_read());
14 auto node_type
= header
->get_node_type();
15 auto field_type
= header
->get_field_type();
16 if (!field_type
.has_value()) {
17 throw std::runtime_error("load failed: bad field type");
19 return {node_type
, *field_type
};
22 NodeExtentManagerURef
NodeExtentManager::create_dummy(bool is_sync
) {
24 return NodeExtentManagerURef(new DummyNodeExtentManager
<true>());
26 return NodeExtentManagerURef(new DummyNodeExtentManager
<false>());
30 NodeExtentManagerURef
NodeExtentManager::create_seastore(
31 TransactionManager
& tm
, laddr_t min_laddr
) {
32 return NodeExtentManagerURef(new SeastoreNodeExtentManager(tm
, min_laddr
));