1 // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:nil -*-
2 // vim: ts=8 sw=2 smarttab
8 #include <boost/intrusive_ptr.hpp>
9 #include <boost/smart_ptr/intrusive_ref_counter.hpp>
10 #include <seastar/core/future.hh>
12 #include "include/buffer_fwd.h"
13 #include "include/ceph_assert.h"
14 #include "common/hobject.h"
16 #include "crimson/common/errorator.h"
17 #include "crimson/os/seastore/onode.h"
18 #include "crimson/os/seastore/seastore_types.h"
19 #include "crimson/os/seastore/transaction_manager.h"
20 #include "crimson/osd/exceptions.h"
22 namespace crimson::os::seastore
{
25 using base_iertr
= TransactionManager::base_iertr
;
27 using mkfs_iertr
= base_iertr
;
28 using mkfs_ret
= mkfs_iertr::future
<>;
29 virtual mkfs_ret
mkfs(Transaction
&t
) = 0;
31 using contains_onode_iertr
= base_iertr
;
32 using contains_onode_ret
= contains_onode_iertr::future
<bool>;
33 virtual contains_onode_ret
contains_onode(
35 const ghobject_t
&hoid
) = 0;
37 using get_onode_iertr
= base_iertr::extend
<
38 crimson::ct_error::enoent
>;
39 using get_onode_ret
= get_onode_iertr::future
<
41 virtual get_onode_ret
get_onode(
43 const ghobject_t
&hoid
) = 0;
45 using get_or_create_onode_iertr
= base_iertr::extend
<
46 crimson::ct_error::value_too_large
>;
47 using get_or_create_onode_ret
= get_or_create_onode_iertr::future
<
49 virtual get_or_create_onode_ret
get_or_create_onode(
51 const ghobject_t
&hoid
) = 0;
53 using get_or_create_onodes_iertr
= base_iertr::extend
<
54 crimson::ct_error::value_too_large
>;
55 using get_or_create_onodes_ret
= get_or_create_onodes_iertr::future
<
56 std::vector
<OnodeRef
>>;
57 virtual get_or_create_onodes_ret
get_or_create_onodes(
59 const std::vector
<ghobject_t
> &hoids
) = 0;
61 using write_dirty_iertr
= base_iertr
;
62 using write_dirty_ret
= write_dirty_iertr::future
<>;
63 virtual write_dirty_ret
write_dirty(
65 const std::vector
<OnodeRef
> &onodes
) = 0;
67 using erase_onode_iertr
= base_iertr
;
68 using erase_onode_ret
= erase_onode_iertr::future
<>;
69 virtual erase_onode_ret
erase_onode(
73 using list_onodes_iertr
= base_iertr
;
74 using list_onodes_bare_ret
= std::tuple
<std::vector
<ghobject_t
>, ghobject_t
>;
75 using list_onodes_ret
= list_onodes_iertr::future
<list_onodes_bare_ret
>;
76 virtual list_onodes_ret
list_onodes(
78 const ghobject_t
& start
,
79 const ghobject_t
& end
,
82 virtual ~OnodeManager() {}
84 using OnodeManagerRef
= std::unique_ptr
<OnodeManager
>;