]>
git.proxmox.com Git - ceph.git/blob - 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
4 #ifndef CEPH_CLS_JOURNAL_CLIENT_H
5 #define CEPH_CLS_JOURNAL_CLIENT_H
7 #include "include/int_types.h"
8 #include "include/rados/librados.hpp"
9 #include "cls/journal/cls_journal_types.h"
13 #include <boost/optional.hpp>
21 void create(librados::ObjectWriteOperation
*op
,
22 uint8_t order
, uint8_t splay
, int64_t pool_id
);
23 int create(librados::IoCtx
&ioctx
, const std::string
&oid
, uint8_t order
,
24 uint8_t splay
, int64_t pool_id
);
26 void get_immutable_metadata(librados::IoCtx
&ioctx
, const std::string
&oid
,
27 uint8_t *order
, uint8_t *splay_width
,
28 int64_t *pool_id
, Context
*on_finish
);
29 void get_mutable_metadata(librados::IoCtx
&ioctx
, const std::string
&oid
,
30 uint64_t *minimum_set
, uint64_t *active_set
,
31 std::set
<cls::journal::Client
> *clients
,
34 void set_minimum_set(librados::ObjectWriteOperation
*op
, uint64_t object_set
);
35 void set_active_set(librados::ObjectWriteOperation
*op
, uint64_t object_set
);
37 // journal client helpers
38 int get_client(librados::IoCtx
&ioctx
, const std::string
&oid
,
39 const std::string
&id
, cls::journal::Client
*client
);
40 void get_client_start(librados::ObjectReadOperation
*op
,
41 const std::string
&id
);
42 int get_client_finish(bufferlist::iterator
*iter
,
43 cls::journal::Client
*client
);
45 int client_register(librados::IoCtx
&ioctx
, const std::string
&oid
,
46 const std::string
&id
, const bufferlist
&data
);
47 void client_register(librados::ObjectWriteOperation
*op
,
48 const std::string
&id
, const bufferlist
&data
);
50 int client_update_data(librados::IoCtx
&ioctx
, const std::string
&oid
,
51 const std::string
&id
, const bufferlist
&data
);
52 void client_update_data(librados::ObjectWriteOperation
*op
,
53 const std::string
&id
, const bufferlist
&data
);
54 int client_update_state(librados::IoCtx
&ioctx
, const std::string
&oid
,
55 const std::string
&id
, cls::journal::ClientState state
);
56 void client_update_state(librados::ObjectWriteOperation
*op
,
57 const std::string
&id
,
58 cls::journal::ClientState state
);
60 int client_unregister(librados::IoCtx
&ioctx
, const std::string
&oid
,
61 const std::string
&id
);
62 void client_unregister(librados::ObjectWriteOperation
*op
,
63 const std::string
&id
);
65 void client_commit(librados::ObjectWriteOperation
*op
, const std::string
&id
,
66 const cls::journal::ObjectSetPosition
&commit_position
);
68 int client_list(librados::IoCtx
&ioctx
, const std::string
&oid
,
69 std::set
<cls::journal::Client
> *clients
);
70 void client_list(librados::IoCtx
&ioctx
, const std::string
&oid
,
71 std::set
<cls::journal::Client
> *clients
, Context
*on_finish
);
73 // journal tag helpers
74 int get_next_tag_tid(librados::IoCtx
&ioctx
, const std::string
&oid
,
76 void get_next_tag_tid_start(librados::ObjectReadOperation
*op
);
77 int get_next_tag_tid_finish(bufferlist::iterator
*iter
,
80 int get_tag(librados::IoCtx
&ioctx
, const std::string
&oid
,
81 uint64_t tag_tid
, cls::journal::Tag
*tag
);
82 void get_tag_start(librados::ObjectReadOperation
*op
,
84 int get_tag_finish(bufferlist::iterator
*iter
, cls::journal::Tag
*tag
);
86 int tag_create(librados::IoCtx
&ioctx
, const std::string
&oid
,
87 uint64_t tag_tid
, uint64_t tag_class
,
88 const bufferlist
&data
);
89 void tag_create(librados::ObjectWriteOperation
*op
,
90 uint64_t tag_tid
, uint64_t tag_class
,
91 const bufferlist
&data
);
93 int tag_list(librados::IoCtx
&ioctx
, const std::string
&oid
,
94 const std::string
&client_id
, boost::optional
<uint64_t> tag_class
,
95 std::set
<cls::journal::Tag
> *tags
);
96 void tag_list_start(librados::ObjectReadOperation
*op
,
97 uint64_t start_after_tag_tid
, uint64_t max_return
,
98 const std::string
&client_id
,
99 boost::optional
<uint64_t> tag_class
);
100 int tag_list_finish(bufferlist::iterator
*iter
,
101 std::set
<cls::journal::Tag
> *tags
);
103 // journal entry helpers
104 void guard_append(librados::ObjectWriteOperation
*op
, uint64_t soft_max_size
);
106 } // namespace client
107 } // namespace journal
110 #endif // CEPH_CLS_JOURNAL_CLIENT_H