Fix some bugs when testing opensds ansible
[stor4nfv.git] / src / ceph / src / cls / journal / cls_journal_client.h
1 // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
2 // vim: ts=8 sw=2 smarttab
3
4 #ifndef CEPH_CLS_JOURNAL_CLIENT_H
5 #define CEPH_CLS_JOURNAL_CLIENT_H
6
7 #include "cls/journal/cls_journal_types.h"
8 #include <set>
9 #include <boost/optional.hpp>
10
11 class Context;
12 namespace librados {
13   class IoCtx;
14   class ObjectWriteOperation;
15   class ObjectReadOperation;
16 }
17
18 namespace cls {
19 namespace journal {
20 namespace client {
21
22 void create(librados::ObjectWriteOperation *op,
23             uint8_t order, uint8_t splay, int64_t pool_id);
24 int create(librados::IoCtx &ioctx, const std::string &oid, uint8_t order,
25            uint8_t splay, int64_t pool_id);
26
27 void get_immutable_metadata(librados::IoCtx &ioctx, const std::string &oid,
28                             uint8_t *order, uint8_t *splay_width,
29                             int64_t *pool_id, Context *on_finish);
30 void get_mutable_metadata(librados::IoCtx &ioctx, const std::string &oid,
31                           uint64_t *minimum_set, uint64_t *active_set,
32                           std::set<cls::journal::Client> *clients,
33                           Context *on_finish);
34
35 void set_minimum_set(librados::ObjectWriteOperation *op, uint64_t object_set);
36 void set_active_set(librados::ObjectWriteOperation *op, uint64_t object_set);
37
38 // journal client helpers
39 int get_client(librados::IoCtx &ioctx, const std::string &oid,
40                const std::string &id, cls::journal::Client *client);
41 void get_client_start(librados::ObjectReadOperation *op,
42                       const std::string &id);
43 int get_client_finish(bufferlist::iterator *iter,
44                       cls::journal::Client *client);
45
46 int client_register(librados::IoCtx &ioctx, const std::string &oid,
47                     const std::string &id, const bufferlist &data);
48 void client_register(librados::ObjectWriteOperation *op,
49                      const std::string &id, const bufferlist &data);
50
51 int client_update_data(librados::IoCtx &ioctx, const std::string &oid,
52                        const std::string &id, const bufferlist &data);
53 void client_update_data(librados::ObjectWriteOperation *op,
54                         const std::string &id, const bufferlist &data);
55 int client_update_state(librados::IoCtx &ioctx, const std::string &oid,
56                         const std::string &id, cls::journal::ClientState state);
57 void client_update_state(librados::ObjectWriteOperation *op,
58                          const std::string &id,
59                          cls::journal::ClientState state);
60
61 int client_unregister(librados::IoCtx &ioctx, const std::string &oid,
62                       const std::string &id);
63 void client_unregister(librados::ObjectWriteOperation *op,
64                        const std::string &id);
65
66 void client_commit(librados::ObjectWriteOperation *op, const std::string &id,
67                    const cls::journal::ObjectSetPosition &commit_position);
68
69 int client_list(librados::IoCtx &ioctx, const std::string &oid,
70                 std::set<cls::journal::Client> *clients);
71 void client_list(librados::IoCtx &ioctx, const std::string &oid,
72                  std::set<cls::journal::Client> *clients, Context *on_finish);
73
74 // journal tag helpers
75 int get_next_tag_tid(librados::IoCtx &ioctx, const std::string &oid,
76                      uint64_t *tag_tid);
77 void get_next_tag_tid_start(librados::ObjectReadOperation *op);
78 int get_next_tag_tid_finish(bufferlist::iterator *iter,
79                             uint64_t *tag_tid);
80
81 int get_tag(librados::IoCtx &ioctx, const std::string &oid,
82             uint64_t tag_tid, cls::journal::Tag *tag);
83 void get_tag_start(librados::ObjectReadOperation *op,
84                    uint64_t tag_tid);
85 int get_tag_finish(bufferlist::iterator *iter, cls::journal::Tag *tag);
86
87 int tag_create(librados::IoCtx &ioctx, const std::string &oid,
88                uint64_t tag_tid, uint64_t tag_class,
89                const bufferlist &data);
90 void tag_create(librados::ObjectWriteOperation *op,
91                 uint64_t tag_tid, uint64_t tag_class,
92                 const bufferlist &data);
93
94 int tag_list(librados::IoCtx &ioctx, const std::string &oid,
95              const std::string &client_id, boost::optional<uint64_t> tag_class,
96              std::set<cls::journal::Tag> *tags);
97 void tag_list_start(librados::ObjectReadOperation *op,
98                     uint64_t start_after_tag_tid, uint64_t max_return,
99                     const std::string &client_id,
100                     boost::optional<uint64_t> tag_class);
101 int tag_list_finish(bufferlist::iterator *iter,
102                     std::set<cls::journal::Tag> *tags);
103
104 // journal entry helpers
105 void guard_append(librados::ObjectWriteOperation *op, uint64_t soft_max_size);
106
107 } // namespace client
108 } // namespace journal
109 } // namespace cls
110
111 #endif // CEPH_CLS_JOURNAL_CLIENT_H