]> git.proxmox.com Git - ceph.git/blob - ceph/src/crimson/os/seastore/onode_manager.h
import quincy beta 17.1.0
[ceph.git] / ceph / src / crimson / os / seastore / onode_manager.h
1 // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:nil -*-
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
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"
21
22 namespace crimson::os::seastore {
23
24 class OnodeManager {
25 using base_iertr = TransactionManager::base_iertr;
26 public:
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(
34 Transaction &trans,
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(
42 Transaction &trans,
43 const ghobject_t &hoid) = 0;
44
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(
50 Transaction &trans,
51 const ghobject_t &hoid) = 0;
52
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;
60
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;
66
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>;
85
86 }