]>
git.proxmox.com Git - ceph.git/blob - ceph/src/cls/rbd/cls_rbd_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_LIBRBD_CLS_RBD_CLIENT_H
5 #define CEPH_LIBRBD_CLS_RBD_CLIENT_H
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"
16 class ObjectReadOperation
;
18 class ObjectWriteOperation
;
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
,
28 int get_immutable_metadata(librados::IoCtx
*ioctx
, const std::string
&oid
,
29 std::string
*object_prefix
, uint8_t *order
);
31 void get_mutable_metadata_start(librados::ObjectReadOperation
*op
,
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
,
46 std::string
*lock_tag
,
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
,
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
,
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
);
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
);
128 int snapshot_timestamp_list_finish(bufferlist::iterator
*it
,
129 const std::vector
<snapid_t
> &ids
,
130 std::vector
<utime_t
> *timestamps
);
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
);
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
);
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
);
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
);
158 int copyup(librados::IoCtx
*ioctx
, const std::string
&oid
,
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
,
168 void snapshot_set_limit(librados::ObjectWriteOperation
*op
,
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
);
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
,
185 int get_create_timestamp(librados::IoCtx
*ioctx
, const std::string
&oid
,
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
);
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
);
210 void set_id(librados::ObjectWriteOperation
*op
, std::string id
);
211 int set_id(librados::IoCtx
*ioctx
, const std::string
&oid
, std::string id
);
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
);
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
);
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
);
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
);
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
,
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
);
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
);
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
,
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
);
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
);
435 } // namespace cls_client
436 } // namespace librbd
437 #endif // CEPH_LIBRBD_CLS_RBD_CLIENT_H