]>
Commit | Line | Data |
---|---|---|
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_LIBRBD_CLS_RBD_CLIENT_H | |
5 | #define CEPH_LIBRBD_CLS_RBD_CLIENT_H | |
6 | ||
7 | #include "cls/lock/cls_lock_types.h" | |
8 | #include "cls/rbd/cls_rbd_types.h" | |
9 | #include "common/bit_vector.hpp" | |
10 | #include "common/snap_types.h" | |
11 | #include "include/types.h" | |
12 | #include "librbd/Types.h" | |
13 | ||
14 | class Context; | |
15 | namespace librados { | |
16 | class ObjectReadOperation; | |
17 | class IoCtx; | |
18 | class ObjectWriteOperation; | |
19 | } | |
20 | ||
21 | namespace librbd { | |
22 | namespace cls_client { | |
23 | // high-level interface to the header | |
24 | void get_immutable_metadata_start(librados::ObjectReadOperation *op); | |
25 | int get_immutable_metadata_finish(bufferlist::iterator *it, | |
26 | std::string *object_prefix, | |
27 | uint8_t *order); | |
28 | int get_immutable_metadata(librados::IoCtx *ioctx, const std::string &oid, | |
29 | std::string *object_prefix, uint8_t *order); | |
30 | ||
31 | void get_mutable_metadata_start(librados::ObjectReadOperation *op, | |
32 | bool read_only); | |
33 | int get_mutable_metadata_finish(bufferlist::iterator *it, | |
34 | uint64_t *size, uint64_t *features, | |
35 | uint64_t *incompatible_features, | |
36 | std::map<rados::cls::lock::locker_id_t, | |
37 | rados::cls::lock::locker_info_t> *lockers, | |
38 | bool *exclusive_lock, std::string *lock_tag, | |
39 | ::SnapContext *snapc, ParentInfo *parent); | |
40 | int get_mutable_metadata(librados::IoCtx *ioctx, const std::string &oid, | |
41 | bool read_only, uint64_t *size, uint64_t *features, | |
42 | uint64_t *incompatible_features, | |
43 | map<rados::cls::lock::locker_id_t, | |
44 | rados::cls::lock::locker_info_t> *lockers, | |
45 | bool *exclusive_lock, | |
46 | std::string *lock_tag, | |
47 | ::SnapContext *snapc, | |
48 | ParentInfo *parent); | |
49 | ||
50 | // low-level interface (mainly for testing) | |
51 | void create_image(librados::ObjectWriteOperation *op, uint64_t size, | |
52 | uint8_t order, uint64_t features, | |
53 | const std::string &object_prefix, int64_t data_pool_id); | |
54 | int create_image(librados::IoCtx *ioctx, const std::string &oid, | |
55 | uint64_t size, uint8_t order, uint64_t features, | |
56 | const std::string &object_prefix, int64_t data_pool_id); | |
57 | int get_features(librados::IoCtx *ioctx, const std::string &oid, | |
58 | snapid_t snap_id, uint64_t *features); | |
59 | void set_features(librados::ObjectWriteOperation *op, uint64_t features, | |
60 | uint64_t mask); | |
61 | int set_features(librados::IoCtx *ioctx, const std::string &oid, | |
62 | uint64_t features, uint64_t mask); | |
63 | int get_object_prefix(librados::IoCtx *ioctx, const std::string &oid, | |
64 | std::string *object_prefix); | |
65 | void get_data_pool_start(librados::ObjectReadOperation *op); | |
66 | int get_data_pool_finish(bufferlist::iterator *it, int64_t *data_pool_id); | |
67 | int get_data_pool(librados::IoCtx *ioctx, const std::string &oid, | |
68 | int64_t *data_pool_id); | |
69 | int get_size(librados::IoCtx *ioctx, const std::string &oid, | |
70 | snapid_t snap_id, uint64_t *size, uint8_t *order); | |
71 | int set_size(librados::IoCtx *ioctx, const std::string &oid, | |
72 | uint64_t size); | |
73 | void set_size(librados::ObjectWriteOperation *op, uint64_t size); | |
74 | int get_parent(librados::IoCtx *ioctx, const std::string &oid, | |
75 | snapid_t snap_id, ParentSpec *pspec, | |
76 | uint64_t *parent_overlap); | |
77 | int set_parent(librados::IoCtx *ioctx, const std::string &oid, | |
78 | const ParentSpec &pspec, uint64_t parent_overlap); | |
79 | void set_parent(librados::ObjectWriteOperation *op, | |
80 | const ParentSpec &pspec, uint64_t parent_overlap); | |
81 | void get_flags_start(librados::ObjectReadOperation *op, | |
82 | const std::vector<snapid_t> &snap_ids); | |
83 | int get_flags_finish(bufferlist::iterator *it, uint64_t *flags, | |
84 | const std::vector<snapid_t> &snap_ids, | |
85 | std::vector<uint64_t> *snap_flags); | |
86 | int get_flags(librados::IoCtx *ioctx, const std::string &oid, | |
87 | uint64_t *flags, const std::vector<snapid_t> &snap_ids, | |
88 | vector<uint64_t> *snap_flags); | |
89 | void set_flags(librados::ObjectWriteOperation *op, snapid_t snap_id, | |
90 | uint64_t flags, uint64_t mask); | |
91 | int remove_parent(librados::IoCtx *ioctx, const std::string &oid); | |
92 | void remove_parent(librados::ObjectWriteOperation *op); | |
93 | int add_child(librados::IoCtx *ioctx, const std::string &oid, | |
94 | const ParentSpec &pspec, const std::string &c_imageid); | |
95 | void add_child(librados::ObjectWriteOperation *op, | |
96 | const ParentSpec pspec, const std::string &c_imageid); | |
97 | void remove_child(librados::ObjectWriteOperation *op, | |
98 | const ParentSpec &pspec, const std::string &c_imageid); | |
99 | int remove_child(librados::IoCtx *ioctx, const std::string &oid, | |
100 | const ParentSpec &pspec, const std::string &c_imageid); | |
101 | void get_children_start(librados::ObjectReadOperation *op, | |
102 | const ParentSpec &pspec); | |
103 | int get_children_finish(bufferlist::iterator *it, | |
104 | std::set<string> *children); | |
105 | int get_children(librados::IoCtx *ioctx, const std::string &oid, | |
106 | const ParentSpec &pspec, set<string>& children); | |
107 | void snapshot_add(librados::ObjectWriteOperation *op, snapid_t snap_id, | |
108 | const std::string &snap_name, | |
109 | const cls::rbd::SnapshotNamespace &snap_namespace); | |
110 | void snapshot_remove(librados::ObjectWriteOperation *op, snapid_t snap_id); | |
111 | void snapshot_rename(librados::ObjectWriteOperation *op, | |
112 | snapid_t src_snap_id, | |
113 | const std::string &dst_name); | |
114 | int get_snapcontext(librados::IoCtx *ioctx, const std::string &oid, | |
115 | ::SnapContext *snapc); | |
116 | ||
117 | void snapshot_list_start(librados::ObjectReadOperation *op, | |
118 | const std::vector<snapid_t> &ids); | |
119 | int snapshot_list_finish(bufferlist::iterator *it, | |
120 | const std::vector<snapid_t> &ids, | |
121 | std::vector<string> *names, | |
122 | std::vector<uint64_t> *sizes, | |
123 | std::vector<ParentInfo> *parents, | |
124 | std::vector<uint8_t> *protection_statuses); | |
125 | void snapshot_timestamp_list_start(librados::ObjectReadOperation *op, | |
126 | const std::vector<snapid_t> &ids); | |
127 | ||
128 | int snapshot_timestamp_list_finish(bufferlist::iterator *it, | |
129 | const std::vector<snapid_t> &ids, | |
130 | std::vector<utime_t> *timestamps); | |
131 | ||
132 | int snapshot_timestamp_list(librados::IoCtx *ioctx, const std::string &oid, | |
133 | const std::vector<snapid_t> &ids, | |
134 | std::vector<utime_t> *timestamps); | |
135 | ||
136 | int snapshot_list(librados::IoCtx *ioctx, const std::string &oid, | |
137 | const std::vector<snapid_t> &ids, | |
138 | std::vector<string> *names, | |
139 | std::vector<uint64_t> *sizes, | |
140 | std::vector<ParentInfo> *parents, | |
141 | std::vector<uint8_t> *protection_statuses); | |
142 | ||
143 | void snapshot_namespace_list_start(librados::ObjectReadOperation *op, | |
144 | const std::vector<snapid_t> &ids); | |
145 | int snapshot_namespace_list_finish(bufferlist::iterator *it, | |
146 | const std::vector<snapid_t> &ids, | |
147 | std::vector<cls::rbd::SnapshotNamespace> *namespaces); | |
148 | int snapshot_namespace_list(librados::IoCtx *ioctx, const std::string &oid, | |
149 | const std::vector<snapid_t> &ids, | |
150 | std::vector<cls::rbd::SnapshotNamespace> *namespaces); | |
151 | ||
152 | void get_all_features_start(librados::ObjectReadOperation *op); | |
153 | int get_all_features_finish(bufferlist::iterator *it, | |
154 | uint64_t *all_features); | |
155 | int get_all_features(librados::IoCtx *ioctx, const std::string &oid, | |
156 | uint64_t *all_features); | |
157 | ||
158 | int copyup(librados::IoCtx *ioctx, const std::string &oid, | |
159 | bufferlist data); | |
160 | int get_protection_status(librados::IoCtx *ioctx, const std::string &oid, | |
161 | snapid_t snap_id, uint8_t *protection_status); | |
162 | int set_protection_status(librados::IoCtx *ioctx, const std::string &oid, | |
163 | snapid_t snap_id, uint8_t protection_status); | |
164 | void set_protection_status(librados::ObjectWriteOperation *op, | |
165 | snapid_t snap_id, uint8_t protection_status); | |
166 | int snapshot_get_limit(librados::IoCtx *ioctx, const std::string &oid, | |
167 | uint64_t *limit); | |
168 | void snapshot_set_limit(librados::ObjectWriteOperation *op, | |
169 | uint64_t limit); | |
170 | ||
171 | void get_stripe_unit_count_start(librados::ObjectReadOperation *op); | |
172 | int get_stripe_unit_count_finish(bufferlist::iterator *it, | |
173 | uint64_t *stripe_unit, | |
174 | uint64_t *stripe_count); | |
175 | int get_stripe_unit_count(librados::IoCtx *ioctx, const std::string &oid, | |
176 | uint64_t *stripe_unit, uint64_t *stripe_count); | |
177 | ||
178 | void set_stripe_unit_count(librados::ObjectWriteOperation *op, | |
179 | uint64_t stripe_unit, uint64_t stripe_count); | |
180 | int set_stripe_unit_count(librados::IoCtx *ioctx, const std::string &oid, | |
181 | uint64_t stripe_unit, uint64_t stripe_count); | |
182 | void get_create_timestamp_start(librados::ObjectReadOperation *op); | |
183 | int get_create_timestamp_finish(bufferlist::iterator *it, | |
184 | utime_t *timestamp); | |
185 | int get_create_timestamp(librados::IoCtx *ioctx, const std::string &oid, | |
186 | utime_t *timestamp); | |
187 | int metadata_list(librados::IoCtx *ioctx, const std::string &oid, | |
188 | const std::string &start, uint64_t max_return, | |
189 | map<string, bufferlist> *pairs); | |
190 | void metadata_list_start(librados::ObjectReadOperation *op, | |
191 | const std::string &start, uint64_t max_return); | |
192 | int metadata_list_finish(bufferlist::iterator *it, | |
193 | std::map<std::string, bufferlist> *pairs); | |
194 | void metadata_set(librados::ObjectWriteOperation *op, | |
195 | const map<std::string, bufferlist> &data); | |
196 | int metadata_set(librados::IoCtx *ioctx, const std::string &oid, | |
197 | const map<std::string, bufferlist> &data); | |
198 | void metadata_remove(librados::ObjectWriteOperation *op, | |
199 | const std::string &key); | |
200 | int metadata_remove(librados::IoCtx *ioctx, const std::string &oid, | |
201 | const std::string &key); | |
202 | int metadata_get(librados::IoCtx *ioctx, const std::string &oid, | |
203 | const std::string &key, string *v); | |
204 | ||
205 | // operations on rbd_id objects | |
206 | void get_id_start(librados::ObjectReadOperation *op); | |
207 | int get_id_finish(bufferlist::iterator *it, std::string *id); | |
208 | int get_id(librados::IoCtx *ioctx, const std::string &oid, std::string *id); | |
209 | ||
210 | void set_id(librados::ObjectWriteOperation *op, std::string id); | |
211 | int set_id(librados::IoCtx *ioctx, const std::string &oid, std::string id); | |
212 | ||
213 | // operations on rbd_directory objects | |
214 | int dir_get_id(librados::IoCtx *ioctx, const std::string &oid, | |
215 | const std::string &name, std::string *id); | |
216 | void dir_get_id_start(librados::ObjectReadOperation *op, | |
217 | const std::string &image_name); | |
218 | int dir_get_id_finish(bufferlist::iterator *iter, std::string *image_id); | |
219 | void dir_get_name_start(librados::ObjectReadOperation *op, | |
220 | const std::string &id); | |
221 | int dir_get_name_finish(bufferlist::iterator *it, std::string *name); | |
222 | int dir_get_name(librados::IoCtx *ioctx, const std::string &oid, | |
223 | const std::string &id, std::string *name); | |
224 | void dir_list_start(librados::ObjectReadOperation *op, | |
225 | const std::string &start, uint64_t max_return); | |
226 | int dir_list_finish(bufferlist::iterator *it, map<string, string> *images); | |
227 | int dir_list(librados::IoCtx *ioctx, const std::string &oid, | |
228 | const std::string &start, uint64_t max_return, | |
229 | map<string, string> *images); | |
230 | void dir_add_image(librados::ObjectWriteOperation *op, | |
231 | const std::string &name, const std::string &id); | |
232 | int dir_add_image(librados::IoCtx *ioctx, const std::string &oid, | |
233 | const std::string &name, const std::string &id); | |
234 | int dir_remove_image(librados::IoCtx *ioctx, const std::string &oid, | |
235 | const std::string &name, const std::string &id); | |
236 | void dir_remove_image(librados::ObjectWriteOperation *op, | |
237 | const std::string &name, const std::string &id); | |
238 | // atomic remove and add | |
239 | void dir_rename_image(librados::ObjectWriteOperation *op, | |
240 | const std::string &src, const std::string &dest, | |
241 | const std::string &id); | |
242 | ||
243 | // operations on the rbd_object_map.$image_id object | |
244 | void object_map_load_start(librados::ObjectReadOperation *op); | |
245 | int object_map_load_finish(bufferlist::iterator *it, | |
246 | ceph::BitVector<2> *object_map); | |
247 | int object_map_load(librados::IoCtx *ioctx, const std::string &oid, | |
248 | ceph::BitVector<2> *object_map); | |
249 | void object_map_save(librados::ObjectWriteOperation *rados_op, | |
250 | const ceph::BitVector<2> &object_map); | |
251 | void object_map_resize(librados::ObjectWriteOperation *rados_op, | |
252 | uint64_t object_count, uint8_t default_state); | |
253 | void object_map_update(librados::ObjectWriteOperation *rados_op, | |
254 | uint64_t start_object_no, uint64_t end_object_no, | |
255 | uint8_t new_object_state, | |
256 | const boost::optional<uint8_t> ¤t_object_state); | |
257 | void object_map_snap_add(librados::ObjectWriteOperation *rados_op); | |
258 | void object_map_snap_remove(librados::ObjectWriteOperation *rados_op, | |
259 | const ceph::BitVector<2> &object_map); | |
260 | ||
261 | // class operations on the old format, kept for | |
262 | // backwards compatability | |
263 | void old_snapshot_add(librados::ObjectWriteOperation *rados_op, | |
264 | snapid_t snap_id, const std::string &snap_name); | |
265 | void old_snapshot_remove(librados::ObjectWriteOperation *rados_op, | |
266 | const std::string &snap_name); | |
267 | void old_snapshot_rename(librados::ObjectWriteOperation *rados_op, | |
268 | snapid_t src_snap_id, const std::string &dst_name); | |
269 | ||
270 | void old_snapshot_list_start(librados::ObjectReadOperation *op); | |
271 | int old_snapshot_list_finish(bufferlist::iterator *it, | |
272 | std::vector<string> *names, | |
273 | std::vector<uint64_t> *sizes, | |
274 | ::SnapContext *snapc); | |
275 | int old_snapshot_list(librados::IoCtx *ioctx, const std::string &oid, | |
276 | std::vector<string> *names, | |
277 | std::vector<uint64_t> *sizes, | |
278 | ::SnapContext *snapc); | |
279 | ||
280 | // operations on the rbd_mirroring object | |
281 | void mirror_uuid_get_start(librados::ObjectReadOperation *op); | |
282 | int mirror_uuid_get_finish(bufferlist::iterator *it, | |
283 | std::string *uuid); | |
284 | int mirror_uuid_get(librados::IoCtx *ioctx, std::string *uuid); | |
285 | int mirror_uuid_set(librados::IoCtx *ioctx, const std::string &uuid); | |
286 | void mirror_mode_get_start(librados::ObjectReadOperation *op); | |
287 | int mirror_mode_get_finish(bufferlist::iterator *it, | |
288 | cls::rbd::MirrorMode *mirror_mode); | |
289 | int mirror_mode_get(librados::IoCtx *ioctx, | |
290 | cls::rbd::MirrorMode *mirror_mode); | |
291 | int mirror_mode_set(librados::IoCtx *ioctx, | |
292 | cls::rbd::MirrorMode mirror_mode); | |
293 | int mirror_peer_list(librados::IoCtx *ioctx, | |
294 | std::vector<cls::rbd::MirrorPeer> *peers); | |
295 | int mirror_peer_add(librados::IoCtx *ioctx, const std::string &uuid, | |
296 | const std::string &cluster_name, | |
297 | const std::string &client_name, | |
298 | int64_t pool_id = -1); | |
299 | int mirror_peer_remove(librados::IoCtx *ioctx, | |
300 | const std::string &uuid); | |
301 | int mirror_peer_set_client(librados::IoCtx *ioctx, | |
302 | const std::string &uuid, | |
303 | const std::string &client_name); | |
304 | int mirror_peer_set_cluster(librados::IoCtx *ioctx, | |
305 | const std::string &uuid, | |
306 | const std::string &cluster_name); | |
307 | void mirror_image_list_start(librados::ObjectReadOperation *op, | |
308 | const std::string &start, uint64_t max_return); | |
309 | int mirror_image_list_finish(bufferlist::iterator *it, | |
310 | std::map<string, string> *mirror_image_ids); | |
311 | int mirror_image_list(librados::IoCtx *ioctx, | |
312 | const std::string &start, uint64_t max_return, | |
313 | std::map<std::string, std::string> *mirror_image_ids); | |
314 | void mirror_image_get_image_id_start(librados::ObjectReadOperation *op, | |
315 | const std::string &global_image_id); | |
316 | int mirror_image_get_image_id_finish(bufferlist::iterator *it, | |
317 | std::string *image_id); | |
318 | int mirror_image_get_image_id(librados::IoCtx *ioctx, | |
319 | const std::string &global_image_id, | |
320 | std::string *image_id); | |
321 | int mirror_image_get(librados::IoCtx *ioctx, const std::string &image_id, | |
322 | cls::rbd::MirrorImage *mirror_image); | |
323 | void mirror_image_get_start(librados::ObjectReadOperation *op, | |
324 | const std::string &image_id); | |
325 | int mirror_image_get_finish(bufferlist::iterator *iter, | |
326 | cls::rbd::MirrorImage *mirror_image); | |
327 | void mirror_image_set(librados::ObjectWriteOperation *op, | |
328 | const std::string &image_id, | |
329 | const cls::rbd::MirrorImage &mirror_image); | |
330 | int mirror_image_set(librados::IoCtx *ioctx, const std::string &image_id, | |
331 | const cls::rbd::MirrorImage &mirror_image); | |
332 | void mirror_image_remove(librados::ObjectWriteOperation *op, | |
333 | const std::string &image_id); | |
334 | int mirror_image_remove(librados::IoCtx *ioctx, | |
335 | const std::string &image_id); | |
336 | int mirror_image_status_set(librados::IoCtx *ioctx, | |
337 | const std::string &global_image_id, | |
338 | const cls::rbd::MirrorImageStatus &status); | |
339 | void mirror_image_status_set(librados::ObjectWriteOperation *op, | |
340 | const std::string &global_image_id, | |
341 | const cls::rbd::MirrorImageStatus &status); | |
342 | int mirror_image_status_remove(librados::IoCtx *ioctx, | |
343 | const std::string &global_image_id); | |
344 | void mirror_image_status_remove(librados::ObjectWriteOperation *op, | |
345 | const std::string &global_image_id); | |
346 | int mirror_image_status_get(librados::IoCtx *ioctx, | |
347 | const std::string &global_image_id, | |
348 | cls::rbd::MirrorImageStatus *status); | |
349 | void mirror_image_status_get_start(librados::ObjectReadOperation *op, | |
350 | const std::string &global_image_id); | |
351 | int mirror_image_status_get_finish(bufferlist::iterator *iter, | |
352 | cls::rbd::MirrorImageStatus *status); | |
353 | int mirror_image_status_list(librados::IoCtx *ioctx, | |
354 | const std::string &start, uint64_t max_return, | |
355 | std::map<std::string, cls::rbd::MirrorImage> *images, | |
356 | std::map<std::string, cls::rbd::MirrorImageStatus> *statuses); | |
357 | void mirror_image_status_list_start(librados::ObjectReadOperation *op, | |
358 | const std::string &start, | |
359 | uint64_t max_return); | |
360 | int mirror_image_status_list_finish(bufferlist::iterator *iter, | |
361 | std::map<std::string, cls::rbd::MirrorImage> *images, | |
362 | std::map<std::string, cls::rbd::MirrorImageStatus> *statuses); | |
363 | int mirror_image_status_get_summary(librados::IoCtx *ioctx, | |
364 | std::map<cls::rbd::MirrorImageStatusState, int> *states); | |
365 | void mirror_image_status_get_summary_start(librados::ObjectReadOperation *op); | |
366 | int mirror_image_status_get_summary_finish(bufferlist::iterator *iter, | |
367 | std::map<cls::rbd::MirrorImageStatusState, int> *states); | |
368 | int mirror_image_status_remove_down(librados::IoCtx *ioctx); | |
369 | void mirror_image_status_remove_down(librados::ObjectWriteOperation *op); | |
370 | ||
371 | void mirror_instances_list_start(librados::ObjectReadOperation *op); | |
372 | int mirror_instances_list_finish(bufferlist::iterator *iter, | |
373 | std::vector<std::string> *instance_ids); | |
374 | int mirror_instances_list(librados::IoCtx *ioctx, | |
375 | std::vector<std::string> *instance_ids); | |
376 | void mirror_instances_add(librados::ObjectWriteOperation *op, | |
377 | const std::string &instance_id); | |
378 | int mirror_instances_add(librados::IoCtx *ioctx, | |
379 | const std::string &instance_id); | |
380 | void mirror_instances_remove(librados::ObjectWriteOperation *op, | |
381 | const std::string &instance_id); | |
382 | int mirror_instances_remove(librados::IoCtx *ioctx, | |
383 | const std::string &instance_id); | |
384 | ||
385 | // Consistency groups functions | |
386 | int group_create(librados::IoCtx *ioctx, const std::string &oid); | |
387 | int group_dir_list(librados::IoCtx *ioctx, const std::string &oid, | |
388 | const std::string &start, uint64_t max_return, | |
389 | map<string, string> *groups); | |
390 | int group_dir_add(librados::IoCtx *ioctx, const std::string &oid, | |
391 | const std::string &name, const std::string &id); | |
392 | int group_dir_remove(librados::IoCtx *ioctx, const std::string &oid, | |
393 | const std::string &name, const std::string &id); | |
394 | int group_image_remove(librados::IoCtx *ioctx, const std::string &oid, | |
395 | const cls::rbd::GroupImageSpec &spec); | |
396 | int group_image_list(librados::IoCtx *ioctx, const std::string &oid, | |
397 | const cls::rbd::GroupImageSpec &start, | |
398 | uint64_t max_return, | |
399 | std::vector<cls::rbd::GroupImageStatus> *images); | |
400 | int group_image_set(librados::IoCtx *ioctx, const std::string &oid, | |
401 | const cls::rbd::GroupImageStatus &st); | |
402 | int image_add_group(librados::IoCtx *ioctx, const std::string &oid, | |
403 | const cls::rbd::GroupSpec &group_spec); | |
404 | int image_remove_group(librados::IoCtx *ioctx, const std::string &oid, | |
405 | const cls::rbd::GroupSpec &group_spec); | |
406 | void image_get_group_start(librados::ObjectReadOperation *op); | |
407 | int image_get_group_finish(bufferlist::iterator *iter, | |
408 | cls::rbd::GroupSpec *group_spec); | |
409 | int image_get_group(librados::IoCtx *ioctx, const std::string &oid, | |
410 | cls::rbd::GroupSpec *group_spec); | |
411 | ||
412 | // operations on rbd_trash object | |
413 | void trash_add(librados::ObjectWriteOperation *op, | |
414 | const std::string &id, | |
415 | const cls::rbd::TrashImageSpec &trash_spec); | |
416 | int trash_add(librados::IoCtx *ioctx, const std::string &id, | |
417 | const cls::rbd::TrashImageSpec &trash_spec); | |
418 | void trash_remove(librados::ObjectWriteOperation *op, | |
419 | const std::string &id); | |
420 | int trash_remove(librados::IoCtx *ioctx, const std::string &id); | |
421 | void trash_list_start(librados::ObjectReadOperation *op, | |
422 | const std::string &start, uint64_t max_return); | |
423 | int trash_list_finish(bufferlist::iterator *it, | |
424 | map<string, cls::rbd::TrashImageSpec> *entries); | |
425 | int trash_list(librados::IoCtx *ioctx, | |
426 | const std::string &start, uint64_t max_return, | |
427 | map<string, cls::rbd::TrashImageSpec> *entries); | |
428 | void trash_get_start(librados::ObjectReadOperation *op, | |
429 | const std::string &id); | |
430 | int trash_get_finish(bufferlist::iterator *it, | |
431 | cls::rbd::TrashImageSpec *trash_spec); | |
432 | int trash_get(librados::IoCtx *ioctx, const std::string &id, | |
433 | cls::rbd::TrashImageSpec *trash_spec); | |
434 | ||
435 | } // namespace cls_client | |
436 | } // namespace librbd | |
437 | #endif // CEPH_LIBRBD_CLS_RBD_CLIENT_H |