]>
Commit | Line | Data |
---|---|---|
20effc67 | 1 | // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:nil -*- |
f67539c2 TL |
2 | // vim: ts=8 sw=2 smarttab |
3 | ||
4 | #pragma once | |
5 | ||
6 | #include <iostream> | |
7 | ||
8 | #include <boost/intrusive_ptr.hpp> | |
9 | #include <boost/smart_ptr/intrusive_ref_counter.hpp> | |
10 | #include <seastar/core/future.hh> | |
11 | ||
12 | #include "include/buffer_fwd.h" | |
13 | #include "include/ceph_assert.h" | |
14 | #include "common/hobject.h" | |
15 | ||
20effc67 | 16 | #include "crimson/common/errorator.h" |
f67539c2 TL |
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" | |
21 | ||
22 | namespace crimson::os::seastore { | |
23 | ||
24 | class OnodeManager { | |
20effc67 | 25 | using base_iertr = TransactionManager::base_iertr; |
f67539c2 | 26 | public: |
20effc67 TL |
27 | using mkfs_iertr = base_iertr; |
28 | using mkfs_ret = mkfs_iertr::future<>; | |
29 | virtual mkfs_ret mkfs(Transaction &t) = 0; | |
30 | ||
31 | using contains_onode_iertr = base_iertr; | |
32 | using contains_onode_ret = contains_onode_iertr::future<bool>; | |
33 | virtual contains_onode_ret contains_onode( | |
f67539c2 | 34 | Transaction &trans, |
20effc67 TL |
35 | const ghobject_t &hoid) = 0; |
36 | ||
37 | using get_onode_iertr = base_iertr::extend< | |
38 | crimson::ct_error::enoent>; | |
39 | using get_onode_ret = get_onode_iertr::future< | |
40 | OnodeRef>; | |
41 | virtual get_onode_ret get_onode( | |
f67539c2 | 42 | Transaction &trans, |
20effc67 | 43 | const ghobject_t &hoid) = 0; |
f67539c2 | 44 | |
20effc67 TL |
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< | |
48 | OnodeRef>; | |
49 | virtual get_or_create_onode_ret get_or_create_onode( | |
f67539c2 | 50 | Transaction &trans, |
20effc67 | 51 | const ghobject_t &hoid) = 0; |
f67539c2 | 52 | |
20effc67 TL |
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( | |
58 | Transaction &trans, | |
59 | const std::vector<ghobject_t> &hoids) = 0; | |
f67539c2 | 60 | |
20effc67 TL |
61 | using write_dirty_iertr = base_iertr; |
62 | using write_dirty_ret = write_dirty_iertr::future<>; | |
63 | virtual write_dirty_ret write_dirty( | |
64 | Transaction &trans, | |
65 | const std::vector<OnodeRef> &onodes) = 0; | |
f67539c2 | 66 | |
20effc67 TL |
67 | using erase_onode_iertr = base_iertr; |
68 | using erase_onode_ret = erase_onode_iertr::future<>; | |
69 | virtual erase_onode_ret erase_onode( | |
70 | Transaction &trans, | |
71 | OnodeRef &onode) = 0; | |
72 | ||
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( | |
77 | Transaction &trans, | |
78 | const ghobject_t& start, | |
79 | const ghobject_t& end, | |
80 | uint64_t limit) = 0; | |
81 | ||
82 | virtual ~OnodeManager() {} | |
83 | }; | |
84 | using OnodeManagerRef = std::unique_ptr<OnodeManager>; | |
f67539c2 TL |
85 | |
86 | } |