]> git.proxmox.com Git - ceph.git/blame - ceph/src/crimson/os/seastore/onode_manager.h
import quincy beta 17.1.0
[ceph.git] / ceph / src / crimson / os / seastore / onode_manager.h
CommitLineData
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
22namespace crimson::os::seastore {
23
24class OnodeManager {
20effc67 25 using base_iertr = TransactionManager::base_iertr;
f67539c2 26public:
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};
84using OnodeManagerRef = std::unique_ptr<OnodeManager>;
f67539c2
TL
85
86}