librados_sys/
lib.rs

1#![allow(non_camel_case_types)]
2extern crate libc;
3
4use self::libc::{int64_t, size_t, ssize_t, time_t, timeval, uint8_t, uint32_t, uint64_t};
5
6pub type Enum_Unnamed1 = ::libc::c_uint;
7pub const LIBRADOS_OP_FLAG_EXCL: ::libc::c_uint = 1;
8pub const LIBRADOS_OP_FLAG_FAILOK: ::libc::c_uint = 2;
9pub const LIBRADOS_OP_FLAG_FADVISE_RANDOM: ::libc::c_uint = 4;
10pub const LIBRADOS_OP_FLAG_FADVISE_SEQUENTIAL: ::libc::c_uint = 8;
11pub const LIBRADOS_OP_FLAG_FADVISE_WILLNEED: ::libc::c_uint = 16;
12pub const LIBRADOS_OP_FLAG_FADVISE_DONTNEED: ::libc::c_uint = 32;
13pub const LIBRADOS_OP_FLAG_FADVISE_NOCACHE: ::libc::c_uint = 64;
14
15pub type Enum_Unnamed2 = ::libc::c_uint;
16pub const LIBRADOS_CMPXATTR_OP_EQ: ::libc::c_uint = 1;
17pub const LIBRADOS_CMPXATTR_OP_NE: ::libc::c_uint = 2;
18pub const LIBRADOS_CMPXATTR_OP_GT: ::libc::c_uint = 3;
19pub const LIBRADOS_CMPXATTR_OP_GTE: ::libc::c_uint = 4;
20pub const LIBRADOS_CMPXATTR_OP_LT: ::libc::c_uint = 5;
21pub const LIBRADOS_CMPXATTR_OP_LTE: ::libc::c_uint = 6;
22
23pub type Enum_Unnamed3 = ::libc::c_uint;
24pub const LIBRADOS_OPERATION_NOFLAG: ::libc::c_uint = 0;
25pub const LIBRADOS_OPERATION_BALANCE_READS: ::libc::c_uint = 1;
26pub const LIBRADOS_OPERATION_LOCALIZE_READS: ::libc::c_uint = 2;
27pub const LIBRADOS_OPERATION_ORDER_READS_WRITES: ::libc::c_uint = 4;
28pub const LIBRADOS_OPERATION_IGNORE_CACHE: ::libc::c_uint = 8;
29pub const LIBRADOS_OPERATION_SKIPRWLOCKS: ::libc::c_uint = 16;
30pub const LIBRADOS_OPERATION_IGNORE_OVERLAY: ::libc::c_uint = 32;
31
32pub type rados_t = *mut ::libc::c_void;
33pub type rados_config_t = *mut ::libc::c_void;
34pub type rados_ioctx_t = *mut ::libc::c_void;
35pub type rados_list_ctx_t = *mut ::libc::c_void;
36pub type rados_snap_t = uint64_t;
37pub type rados_xattrs_iter_t = *mut ::libc::c_void;
38pub type rados_omap_iter_t = *mut ::libc::c_void;
39
40#[repr(C)]
41#[derive(Copy)]
42pub struct Struct_rados_pool_stat_t {
43    pub num_bytes: uint64_t,
44    pub num_kb: uint64_t,
45    pub num_objects: uint64_t,
46    pub num_object_clones: uint64_t,
47    pub num_object_copies: uint64_t,
48    pub num_objects_missing_on_primary: uint64_t,
49    pub num_objects_unfound: uint64_t,
50    pub num_objects_degraded: uint64_t,
51    pub num_rd: uint64_t,
52    pub num_rd_kb: uint64_t,
53    pub num_wr: uint64_t,
54    pub num_wr_kb: uint64_t,
55}
56impl ::std::clone::Clone for Struct_rados_pool_stat_t {
57    fn clone(&self) -> Self { *self }
58}
59impl ::std::default::Default for Struct_rados_pool_stat_t {
60    fn default() -> Self { unsafe { ::std::mem::zeroed() } }
61}
62#[repr(C)]
63#[derive(Copy)]
64pub struct Struct_rados_cluster_stat_t {
65    pub kb: uint64_t,
66    pub kb_used: uint64_t,
67    pub kb_avail: uint64_t,
68    pub num_objects: uint64_t,
69}
70impl ::std::clone::Clone for Struct_rados_cluster_stat_t {
71    fn clone(&self) -> Self { *self }
72}
73impl ::std::default::Default for Struct_rados_cluster_stat_t {
74    fn default() -> Self { unsafe { ::std::mem::zeroed() } }
75}
76pub type rados_write_op_t = *mut ::libc::c_void;
77pub type rados_read_op_t = *mut ::libc::c_void;
78pub type rados_completion_t = *mut ::libc::c_void;
79pub type rados_callback_t =
80    ::std::option::Option<extern "C" fn(cb: rados_completion_t,
81                                        arg: *mut ::libc::c_void) -> ()>;
82pub type rados_watchcb_t =
83    ::std::option::Option<extern "C" fn(opcode: uint8_t, ver: uint64_t,
84                                        arg: *mut ::libc::c_void) -> ()>;
85pub type rados_watchcb2_t =
86    ::std::option::Option<extern "C" fn(arg: *mut ::libc::c_void,
87                                        notify_id: uint64_t, handle: uint64_t,
88                                        notifier_id: uint64_t,
89                                        data: *mut ::libc::c_void,
90                                        data_len: size_t) -> ()>;
91pub type rados_watcherrcb_t =
92    ::std::option::Option<extern "C" fn(pre: *mut ::libc::c_void,
93                                        cookie: uint64_t, err: ::libc::c_int)
94                              -> ()>;
95pub type rados_log_callback_t =
96    ::std::option::Option<extern "C" fn(arg: *mut ::libc::c_void,
97                                        line: *const ::libc::c_char,
98                                        who: *const ::libc::c_char,
99                                        sec: uint64_t, nsec: uint64_t,
100                                        seq: uint64_t,
101                                        level: *const ::libc::c_char,
102                                        msg: *const ::libc::c_char) -> ()>;
103#[link(name = "rados")]
104extern "C" {
105    pub fn rados_version(major: *mut ::libc::c_int, minor: *mut ::libc::c_int,
106                         extra: *mut ::libc::c_int) -> ();
107    pub fn rados_create(cluster: *mut rados_t, id: *const ::libc::c_char)
108     -> ::libc::c_int;
109    pub fn rados_create2(pcluster: *mut rados_t,
110                         clustername: *const ::libc::c_char,
111                         name: *const ::libc::c_char, flags: uint64_t)
112     -> ::libc::c_int;
113    pub fn rados_create_with_context(cluster: *mut rados_t,
114                                     cct: rados_config_t) -> ::libc::c_int;
115    pub fn rados_ping_monitor(cluster: rados_t, mon_id: *const ::libc::c_char,
116                              outstr: *mut *mut ::libc::c_char,
117                              outstrlen: *mut size_t) -> ::libc::c_int;
118    pub fn rados_connect(cluster: rados_t) -> ::libc::c_int;
119    pub fn rados_shutdown(cluster: rados_t) -> ();
120    pub fn rados_conf_read_file(cluster: rados_t, path: *const ::libc::c_char)
121     -> ::libc::c_int;
122    pub fn rados_conf_parse_argv(cluster: rados_t, argc: ::libc::c_int,
123                                 argv: *mut *const ::libc::c_char)
124     -> ::libc::c_int;
125    pub fn rados_conf_parse_argv_remainder(cluster: rados_t,
126                                           argc: ::libc::c_int,
127                                           argv: *mut *const ::libc::c_char,
128                                           remargv:
129                                               *mut *const ::libc::c_char)
130     -> ::libc::c_int;
131    pub fn rados_conf_parse_env(cluster: rados_t, var: *const ::libc::c_char)
132     -> ::libc::c_int;
133    pub fn rados_conf_set(cluster: rados_t, option: *const ::libc::c_char,
134                          value: *const ::libc::c_char) -> ::libc::c_int;
135    pub fn rados_conf_get(cluster: rados_t, option: *const ::libc::c_char,
136                          buf: *mut ::libc::c_char, len: size_t)
137     -> ::libc::c_int;
138    pub fn rados_cluster_stat(cluster: rados_t,
139                              result: *mut Struct_rados_cluster_stat_t)
140     -> ::libc::c_int;
141    pub fn rados_cluster_fsid(cluster: rados_t, buf: *mut ::libc::c_char,
142                              len: size_t) -> ::libc::c_int;
143    pub fn rados_wait_for_latest_osdmap(cluster: rados_t) -> ::libc::c_int;
144    pub fn rados_pool_list(cluster: rados_t, buf: *mut ::libc::c_char,
145                           len: size_t) -> ::libc::c_int;
146    pub fn rados_cct(cluster: rados_t) -> rados_config_t;
147    pub fn rados_get_instance_id(cluster: rados_t) -> uint64_t;
148    pub fn rados_ioctx_create(cluster: rados_t,
149                              pool_name: *const ::libc::c_char,
150                              ioctx: *mut rados_ioctx_t) -> ::libc::c_int;
151    pub fn rados_ioctx_create2(cluster: rados_t, pool_id: int64_t,
152                               ioctx: *mut rados_ioctx_t) -> ::libc::c_int;
153    pub fn rados_ioctx_destroy(io: rados_ioctx_t) -> ();
154    pub fn rados_ioctx_cct(io: rados_ioctx_t) -> rados_config_t;
155    pub fn rados_ioctx_get_cluster(io: rados_ioctx_t) -> rados_t;
156    pub fn rados_ioctx_pool_stat(io: rados_ioctx_t,
157                                 stats: *mut Struct_rados_pool_stat_t)
158     -> ::libc::c_int;
159    pub fn rados_pool_lookup(cluster: rados_t,
160                             pool_name: *const ::libc::c_char) -> int64_t;
161    pub fn rados_pool_reverse_lookup(cluster: rados_t, id: int64_t,
162                                     buf: *mut ::libc::c_char, maxlen: size_t)
163     -> ::libc::c_int;
164    pub fn rados_pool_create(cluster: rados_t,
165                             pool_name: *const ::libc::c_char)
166     -> ::libc::c_int;
167    pub fn rados_pool_create_with_auid(cluster: rados_t,
168                                       pool_name: *const ::libc::c_char,
169                                       auid: uint64_t) -> ::libc::c_int;
170    pub fn rados_pool_create_with_crush_rule(cluster: rados_t,
171                                             pool_name: *const ::libc::c_char,
172                                             crush_rule_num: uint8_t)
173     -> ::libc::c_int;
174    pub fn rados_pool_create_with_all(cluster: rados_t,
175                                      pool_name: *const ::libc::c_char,
176                                      auid: uint64_t, crush_rule_num: uint8_t)
177     -> ::libc::c_int;
178    pub fn rados_pool_get_base_tier(cluster: rados_t, pool: int64_t,
179                                    base_tier: *mut int64_t) -> ::libc::c_int;
180    pub fn rados_pool_delete(cluster: rados_t,
181                             pool_name: *const ::libc::c_char)
182     -> ::libc::c_int;
183    pub fn rados_ioctx_pool_set_auid(io: rados_ioctx_t, auid: uint64_t)
184     -> ::libc::c_int;
185    pub fn rados_ioctx_pool_get_auid(io: rados_ioctx_t, auid: *mut uint64_t)
186     -> ::libc::c_int;
187    pub fn rados_ioctx_pool_requires_alignment(io: rados_ioctx_t)
188     -> ::libc::c_int;
189    pub fn rados_ioctx_pool_required_alignment(io: rados_ioctx_t) -> uint64_t;
190    pub fn rados_ioctx_get_id(io: rados_ioctx_t) -> int64_t;
191    pub fn rados_ioctx_get_pool_name(io: rados_ioctx_t,
192                                     buf: *mut ::libc::c_char,
193                                     maxlen: ::libc::c_uint) -> ::libc::c_int;
194    pub fn rados_ioctx_locator_set_key(io: rados_ioctx_t,
195                                       key: *const ::libc::c_char) -> ();
196    pub fn rados_ioctx_set_namespace(io: rados_ioctx_t,
197                                     nspace: *const ::libc::c_char) -> ();
198    pub fn rados_nobjects_list_open(io: rados_ioctx_t,
199                                    ctx: *mut rados_list_ctx_t)
200     -> ::libc::c_int;
201    pub fn rados_nobjects_list_get_pg_hash_position(ctx: rados_list_ctx_t)
202     -> uint32_t;
203    pub fn rados_nobjects_list_seek(ctx: rados_list_ctx_t, pos: uint32_t)
204     -> uint32_t;
205    pub fn rados_nobjects_list_next(ctx: rados_list_ctx_t,
206                                    entry: *mut *const ::libc::c_char,
207                                    key: *mut *const ::libc::c_char,
208                                    nspace: *mut *const ::libc::c_char)
209     -> ::libc::c_int;
210    pub fn rados_nobjects_list_close(ctx: rados_list_ctx_t) -> ();
211    pub fn rados_objects_list_open(io: rados_ioctx_t,
212                                   ctx: *mut rados_list_ctx_t)
213     -> ::libc::c_int;
214    pub fn rados_objects_list_get_pg_hash_position(ctx: rados_list_ctx_t)
215     -> uint32_t;
216    pub fn rados_objects_list_seek(ctx: rados_list_ctx_t, pos: uint32_t)
217     -> uint32_t;
218    pub fn rados_objects_list_next(ctx: rados_list_ctx_t,
219                                   entry: *mut *const ::libc::c_char,
220                                   key: *mut *const ::libc::c_char)
221     -> ::libc::c_int;
222    pub fn rados_objects_list_close(ctx: rados_list_ctx_t) -> ();
223    pub fn rados_ioctx_snap_create(io: rados_ioctx_t,
224                                   snapname: *const ::libc::c_char)
225     -> ::libc::c_int;
226    pub fn rados_ioctx_snap_remove(io: rados_ioctx_t,
227                                   snapname: *const ::libc::c_char)
228     -> ::libc::c_int;
229    pub fn rados_ioctx_snap_rollback(io: rados_ioctx_t,
230                                     oid: *const ::libc::c_char,
231                                     snapname: *const ::libc::c_char)
232     -> ::libc::c_int;
233    pub fn rados_rollback(io: rados_ioctx_t, oid: *const ::libc::c_char,
234                          snapname: *const ::libc::c_char) -> ::libc::c_int;
235    pub fn rados_ioctx_snap_set_read(io: rados_ioctx_t, snap: rados_snap_t)
236     -> ();
237    pub fn rados_ioctx_selfmanaged_snap_create(io: rados_ioctx_t,
238                                               snapid: *mut rados_snap_t)
239     -> ::libc::c_int;
240    pub fn rados_ioctx_selfmanaged_snap_remove(io: rados_ioctx_t,
241                                               snapid: rados_snap_t)
242     -> ::libc::c_int;
243    pub fn rados_ioctx_selfmanaged_snap_rollback(io: rados_ioctx_t,
244                                                 oid: *const ::libc::c_char,
245                                                 snapid: rados_snap_t)
246     -> ::libc::c_int;
247    pub fn rados_ioctx_selfmanaged_snap_set_write_ctx(io: rados_ioctx_t,
248                                                      seq: rados_snap_t,
249                                                      snaps:
250                                                          *mut rados_snap_t,
251                                                      num_snaps:
252                                                          ::libc::c_int)
253     -> ::libc::c_int;
254    pub fn rados_ioctx_snap_list(io: rados_ioctx_t, snaps: *mut rados_snap_t,
255                                 maxlen: ::libc::c_int) -> ::libc::c_int;
256    pub fn rados_ioctx_snap_lookup(io: rados_ioctx_t,
257                                   name: *const ::libc::c_char,
258                                   id: *mut rados_snap_t) -> ::libc::c_int;
259    pub fn rados_ioctx_snap_get_name(io: rados_ioctx_t, id: rados_snap_t,
260                                     name: *mut ::libc::c_char,
261                                     maxlen: ::libc::c_int) -> ::libc::c_int;
262    pub fn rados_ioctx_snap_get_stamp(io: rados_ioctx_t, id: rados_snap_t,
263                                      t: *mut time_t) -> ::libc::c_int;
264    pub fn rados_get_last_version(io: rados_ioctx_t) -> uint64_t;
265    pub fn rados_write(io: rados_ioctx_t, oid: *const ::libc::c_char,
266                       buf: *const ::libc::c_char, len: size_t, off: uint64_t)
267     -> ::libc::c_int;
268    pub fn rados_write_full(io: rados_ioctx_t, oid: *const ::libc::c_char,
269                            buf: *const ::libc::c_char, len: size_t)
270     -> ::libc::c_int;
271    pub fn rados_clone_range(io: rados_ioctx_t, dst: *const ::libc::c_char,
272                             dst_off: uint64_t, src: *const ::libc::c_char,
273                             src_off: uint64_t, len: size_t) -> ::libc::c_int;
274    pub fn rados_append(io: rados_ioctx_t, oid: *const ::libc::c_char,
275                        buf: *const ::libc::c_char, len: size_t)
276     -> ::libc::c_int;
277    pub fn rados_read(io: rados_ioctx_t, oid: *const ::libc::c_char,
278                      buf: *mut ::libc::c_char, len: size_t, off: uint64_t)
279     -> ::libc::c_int;
280    pub fn rados_remove(io: rados_ioctx_t, oid: *const ::libc::c_char)
281     -> ::libc::c_int;
282    pub fn rados_trunc(io: rados_ioctx_t, oid: *const ::libc::c_char,
283                       size: uint64_t) -> ::libc::c_int;
284    pub fn rados_getxattr(io: rados_ioctx_t, o: *const ::libc::c_char,
285                          name: *const ::libc::c_char,
286                          buf: *mut ::libc::c_char, len: size_t)
287     -> ::libc::c_int;
288    pub fn rados_setxattr(io: rados_ioctx_t, o: *const ::libc::c_char,
289                          name: *const ::libc::c_char,
290                          buf: *const ::libc::c_char, len: size_t)
291     -> ::libc::c_int;
292    pub fn rados_rmxattr(io: rados_ioctx_t, o: *const ::libc::c_char,
293                         name: *const ::libc::c_char) -> ::libc::c_int;
294    pub fn rados_getxattrs(io: rados_ioctx_t, oid: *const ::libc::c_char,
295                           iter: *mut rados_xattrs_iter_t) -> ::libc::c_int;
296    pub fn rados_getxattrs_next(iter: rados_xattrs_iter_t,
297                                name: *mut *const ::libc::c_char,
298                                val: *mut *const ::libc::c_char,
299                                len: *mut size_t) -> ::libc::c_int;
300    pub fn rados_getxattrs_end(iter: rados_xattrs_iter_t) -> ();
301    pub fn rados_omap_get_next(iter: rados_omap_iter_t,
302                               key: *mut *mut ::libc::c_char,
303                               val: *mut *mut ::libc::c_char,
304                               len: *mut size_t) -> ::libc::c_int;
305    pub fn rados_omap_get_end(iter: rados_omap_iter_t) -> ();
306    pub fn rados_stat(io: rados_ioctx_t, o: *const ::libc::c_char,
307                      psize: *mut uint64_t, pmtime: *mut time_t)
308     -> ::libc::c_int;
309    pub fn rados_tmap_update(io: rados_ioctx_t, o: *const ::libc::c_char,
310                             cmdbuf: *const ::libc::c_char, cmdbuflen: size_t)
311     -> ::libc::c_int;
312    pub fn rados_tmap_put(io: rados_ioctx_t, o: *const ::libc::c_char,
313                          buf: *const ::libc::c_char, buflen: size_t)
314     -> ::libc::c_int;
315    pub fn rados_tmap_get(io: rados_ioctx_t, o: *const ::libc::c_char,
316                          buf: *mut ::libc::c_char, buflen: size_t)
317     -> ::libc::c_int;
318    pub fn rados_exec(io: rados_ioctx_t, oid: *const ::libc::c_char,
319                      cls: *const ::libc::c_char,
320                      method: *const ::libc::c_char,
321                      in_buf: *const ::libc::c_char, in_len: size_t,
322                      buf: *mut ::libc::c_char, out_len: size_t)
323     -> ::libc::c_int;
324    pub fn rados_aio_create_completion(cb_arg: *mut ::libc::c_void,
325                                       cb_complete: rados_callback_t,
326                                       cb_safe: rados_callback_t,
327                                       pc: *mut rados_completion_t)
328     -> ::libc::c_int;
329    pub fn rados_aio_wait_for_complete(c: rados_completion_t)
330     -> ::libc::c_int;
331    pub fn rados_aio_wait_for_safe(c: rados_completion_t) -> ::libc::c_int;
332    pub fn rados_aio_is_complete(c: rados_completion_t) -> ::libc::c_int;
333    pub fn rados_aio_is_safe(c: rados_completion_t) -> ::libc::c_int;
334    pub fn rados_aio_wait_for_complete_and_cb(c: rados_completion_t)
335     -> ::libc::c_int;
336    pub fn rados_aio_wait_for_safe_and_cb(c: rados_completion_t)
337     -> ::libc::c_int;
338    pub fn rados_aio_is_complete_and_cb(c: rados_completion_t)
339     -> ::libc::c_int;
340    pub fn rados_aio_is_safe_and_cb(c: rados_completion_t) -> ::libc::c_int;
341    pub fn rados_aio_get_return_value(c: rados_completion_t) -> ::libc::c_int;
342    pub fn rados_aio_release(c: rados_completion_t) -> ();
343    pub fn rados_aio_write(io: rados_ioctx_t, oid: *const ::libc::c_char,
344                           completion: rados_completion_t,
345                           buf: *const ::libc::c_char, len: size_t,
346                           off: uint64_t) -> ::libc::c_int;
347    pub fn rados_aio_append(io: rados_ioctx_t, oid: *const ::libc::c_char,
348                            completion: rados_completion_t,
349                            buf: *const ::libc::c_char, len: size_t)
350     -> ::libc::c_int;
351    pub fn rados_aio_write_full(io: rados_ioctx_t, oid: *const ::libc::c_char,
352                                completion: rados_completion_t,
353                                buf: *const ::libc::c_char, len: size_t)
354     -> ::libc::c_int;
355    pub fn rados_aio_remove(io: rados_ioctx_t, oid: *const ::libc::c_char,
356                            completion: rados_completion_t) -> ::libc::c_int;
357    pub fn rados_aio_read(io: rados_ioctx_t, oid: *const ::libc::c_char,
358                          completion: rados_completion_t,
359                          buf: *mut ::libc::c_char, len: size_t,
360                          off: uint64_t) -> ::libc::c_int;
361    pub fn rados_aio_flush(io: rados_ioctx_t) -> ::libc::c_int;
362    pub fn rados_aio_flush_async(io: rados_ioctx_t,
363                                 completion: rados_completion_t)
364     -> ::libc::c_int;
365    pub fn rados_aio_stat(io: rados_ioctx_t, o: *const ::libc::c_char,
366                          completion: rados_completion_t,
367                          psize: *mut uint64_t, pmtime: *mut time_t)
368     -> ::libc::c_int;
369    pub fn rados_aio_cancel(io: rados_ioctx_t, completion: rados_completion_t)
370     -> ::libc::c_int;
371    pub fn rados_watch(io: rados_ioctx_t, o: *const ::libc::c_char,
372                       ver: uint64_t, cookie: *mut uint64_t,
373                       watchcb: rados_watchcb_t, arg: *mut ::libc::c_void)
374     -> ::libc::c_int;
375    pub fn rados_watch2(io: rados_ioctx_t, o: *const ::libc::c_char,
376                        cookie: *mut uint64_t, watchcb: rados_watchcb2_t,
377                        watcherrcb: rados_watcherrcb_t,
378                        arg: *mut ::libc::c_void) -> ::libc::c_int;
379    pub fn rados_watch_check(io: rados_ioctx_t, cookie: uint64_t)
380     -> ::libc::c_int;
381    pub fn rados_unwatch(io: rados_ioctx_t, o: *const ::libc::c_char,
382                         cookie: uint64_t) -> ::libc::c_int;
383    pub fn rados_unwatch2(io: rados_ioctx_t, cookie: uint64_t)
384     -> ::libc::c_int;
385    pub fn rados_notify(io: rados_ioctx_t, o: *const ::libc::c_char,
386                        ver: uint64_t, buf: *const ::libc::c_char,
387                        buf_len: ::libc::c_int) -> ::libc::c_int;
388    pub fn rados_notify2(io: rados_ioctx_t, o: *const ::libc::c_char,
389                         buf: *const ::libc::c_char, buf_len: ::libc::c_int,
390                         timeout_ms: uint64_t,
391                         reply_buffer: *mut *mut ::libc::c_char,
392                         reply_buffer_len: *mut size_t) -> ::libc::c_int;
393    pub fn rados_notify_ack(io: rados_ioctx_t, o: *const ::libc::c_char,
394                            notify_id: uint64_t, cookie: uint64_t,
395                            buf: *const ::libc::c_char,
396                            buf_len: ::libc::c_int) -> ::libc::c_int;
397    pub fn rados_watch_flush(cluster: rados_t) -> ::libc::c_int;
398    pub fn rados_set_alloc_hint(io: rados_ioctx_t, o: *const ::libc::c_char,
399                                expected_object_size: uint64_t,
400                                expected_write_size: uint64_t)
401     -> ::libc::c_int;
402    pub fn rados_create_write_op() -> rados_write_op_t;
403    pub fn rados_release_write_op(write_op: rados_write_op_t) -> ();
404    pub fn rados_write_op_set_flags(write_op: rados_write_op_t,
405                                    flags: ::libc::c_int) -> ();
406    pub fn rados_write_op_assert_exists(write_op: rados_write_op_t) -> ();
407    pub fn rados_write_op_assert_version(write_op: rados_write_op_t,
408                                         ver: uint64_t) -> ();
409    pub fn rados_write_op_cmpxattr(write_op: rados_write_op_t,
410                                   name: *const ::libc::c_char,
411                                   comparison_operator: uint8_t,
412                                   value: *const ::libc::c_char,
413                                   value_len: size_t) -> ();
414    pub fn rados_write_op_omap_cmp(write_op: rados_write_op_t,
415                                   key: *const ::libc::c_char,
416                                   comparison_operator: uint8_t,
417                                   val: *const ::libc::c_char,
418                                   val_len: size_t, prval: *mut ::libc::c_int)
419     -> ();
420    pub fn rados_write_op_setxattr(write_op: rados_write_op_t,
421                                   name: *const ::libc::c_char,
422                                   value: *const ::libc::c_char,
423                                   value_len: size_t) -> ();
424    pub fn rados_write_op_rmxattr(write_op: rados_write_op_t,
425                                  name: *const ::libc::c_char) -> ();
426    pub fn rados_write_op_create(write_op: rados_write_op_t,
427                                 exclusive: ::libc::c_int,
428                                 category: *const ::libc::c_char) -> ();
429    pub fn rados_write_op_write(write_op: rados_write_op_t,
430                                buffer: *const ::libc::c_char, len: size_t,
431                                offset: uint64_t) -> ();
432    pub fn rados_write_op_write_full(write_op: rados_write_op_t,
433                                     buffer: *const ::libc::c_char,
434                                     len: size_t) -> ();
435    pub fn rados_write_op_append(write_op: rados_write_op_t,
436                                 buffer: *const ::libc::c_char, len: size_t)
437     -> ();
438    pub fn rados_write_op_remove(write_op: rados_write_op_t) -> ();
439    pub fn rados_write_op_truncate(write_op: rados_write_op_t,
440                                   offset: uint64_t) -> ();
441    pub fn rados_write_op_zero(write_op: rados_write_op_t, offset: uint64_t,
442                               len: uint64_t) -> ();
443    pub fn rados_write_op_exec(write_op: rados_write_op_t,
444                               cls: *const ::libc::c_char,
445                               method: *const ::libc::c_char,
446                               in_buf: *const ::libc::c_char, in_len: size_t,
447                               prval: *mut ::libc::c_int) -> ();
448    pub fn rados_write_op_omap_set(write_op: rados_write_op_t,
449                                   keys: *const *const ::libc::c_char,
450                                   vals: *const *const ::libc::c_char,
451                                   lens: *const size_t, num: size_t) -> ();
452    pub fn rados_write_op_omap_rm_keys(write_op: rados_write_op_t,
453                                       keys: *const *const ::libc::c_char,
454                                       keys_len: size_t) -> ();
455    pub fn rados_write_op_omap_clear(write_op: rados_write_op_t) -> ();
456    pub fn rados_write_op_set_alloc_hint(write_op: rados_write_op_t,
457                                         expected_object_size: uint64_t,
458                                         expected_write_size: uint64_t) -> ();
459    pub fn rados_write_op_operate(write_op: rados_write_op_t,
460                                  io: rados_ioctx_t,
461                                  oid: *const ::libc::c_char,
462                                  mtime: *mut time_t, flags: ::libc::c_int)
463     -> ::libc::c_int;
464    pub fn rados_aio_write_op_operate(write_op: rados_write_op_t,
465                                      io: rados_ioctx_t,
466                                      completion: rados_completion_t,
467                                      oid: *const ::libc::c_char,
468                                      mtime: *mut time_t,
469                                      flags: ::libc::c_int) -> ::libc::c_int;
470    pub fn rados_create_read_op() -> rados_read_op_t;
471    pub fn rados_release_read_op(read_op: rados_read_op_t) -> ();
472    pub fn rados_read_op_set_flags(read_op: rados_read_op_t,
473                                   flags: ::libc::c_int) -> ();
474    pub fn rados_read_op_assert_exists(read_op: rados_read_op_t) -> ();
475    pub fn rados_read_op_assert_version(write_op: rados_read_op_t,
476                                        ver: uint64_t) -> ();
477    pub fn rados_read_op_cmpxattr(read_op: rados_read_op_t,
478                                  name: *const ::libc::c_char,
479                                  comparison_operator: uint8_t,
480                                  value: *const ::libc::c_char,
481                                  value_len: size_t) -> ();
482    pub fn rados_read_op_getxattrs(read_op: rados_read_op_t,
483                                   iter: *mut rados_xattrs_iter_t,
484                                   prval: *mut ::libc::c_int) -> ();
485    pub fn rados_read_op_omap_cmp(read_op: rados_read_op_t,
486                                  key: *const ::libc::c_char,
487                                  comparison_operator: uint8_t,
488                                  val: *const ::libc::c_char, val_len: size_t,
489                                  prval: *mut ::libc::c_int) -> ();
490    pub fn rados_read_op_stat(read_op: rados_read_op_t, psize: *mut uint64_t,
491                              pmtime: *mut time_t, prval: *mut ::libc::c_int)
492     -> ();
493    pub fn rados_read_op_read(read_op: rados_read_op_t, offset: uint64_t,
494                              len: size_t, buf: *mut ::libc::c_char,
495                              bytes_read: *mut size_t,
496                              prval: *mut ::libc::c_int) -> ();
497    pub fn rados_read_op_exec(read_op: rados_read_op_t,
498                              cls: *const ::libc::c_char,
499                              method: *const ::libc::c_char,
500                              in_buf: *const ::libc::c_char, in_len: size_t,
501                              out_buf: *mut *mut ::libc::c_char,
502                              out_len: *mut size_t, prval: *mut ::libc::c_int)
503     -> ();
504    pub fn rados_read_op_exec_user_buf(read_op: rados_read_op_t,
505                                       cls: *const ::libc::c_char,
506                                       method: *const ::libc::c_char,
507                                       in_buf: *const ::libc::c_char,
508                                       in_len: size_t,
509                                       out_buf: *mut ::libc::c_char,
510                                       out_len: size_t, used_len: *mut size_t,
511                                       prval: *mut ::libc::c_int) -> ();
512    pub fn rados_read_op_omap_get_vals(read_op: rados_read_op_t,
513                                       start_after: *const ::libc::c_char,
514                                       filter_prefix: *const ::libc::c_char,
515                                       max_return: uint64_t,
516                                       iter: *mut rados_omap_iter_t,
517                                       prval: *mut ::libc::c_int) -> ();
518    pub fn rados_read_op_omap_get_keys(read_op: rados_read_op_t,
519                                       start_after: *const ::libc::c_char,
520                                       max_return: uint64_t,
521                                       iter: *mut rados_omap_iter_t,
522                                       prval: *mut ::libc::c_int) -> ();
523    pub fn rados_read_op_omap_get_vals_by_keys(read_op: rados_read_op_t,
524                                               keys:
525                                                   *const *const ::libc::c_char,
526                                               keys_len: size_t,
527                                               iter: *mut rados_omap_iter_t,
528                                               prval: *mut ::libc::c_int)
529     -> ();
530    pub fn rados_read_op_operate(read_op: rados_read_op_t, io: rados_ioctx_t,
531                                 oid: *const ::libc::c_char,
532                                 flags: ::libc::c_int) -> ::libc::c_int;
533    pub fn rados_aio_read_op_operate(read_op: rados_read_op_t,
534                                     io: rados_ioctx_t,
535                                     completion: rados_completion_t,
536                                     oid: *const ::libc::c_char,
537                                     flags: ::libc::c_int) -> ::libc::c_int;
538    pub fn rados_lock_exclusive(io: rados_ioctx_t, o: *const ::libc::c_char,
539                                name: *const ::libc::c_char,
540                                cookie: *const ::libc::c_char,
541                                desc: *const ::libc::c_char,
542                                duration: *mut timeval, flags: uint8_t)
543     -> ::libc::c_int;
544    pub fn rados_lock_shared(io: rados_ioctx_t, o: *const ::libc::c_char,
545                             name: *const ::libc::c_char,
546                             cookie: *const ::libc::c_char,
547                             tag: *const ::libc::c_char,
548                             desc: *const ::libc::c_char,
549                             duration: *mut timeval, flags: uint8_t)
550     -> ::libc::c_int;
551    pub fn rados_unlock(io: rados_ioctx_t, o: *const ::libc::c_char,
552                        name: *const ::libc::c_char,
553                        cookie: *const ::libc::c_char) -> ::libc::c_int;
554    pub fn rados_list_lockers(io: rados_ioctx_t, o: *const ::libc::c_char,
555                              name: *const ::libc::c_char,
556                              exclusive: *mut ::libc::c_int,
557                              tag: *mut ::libc::c_char, tag_len: *mut size_t,
558                              clients: *mut ::libc::c_char,
559                              clients_len: *mut size_t,
560                              cookies: *mut ::libc::c_char,
561                              cookies_len: *mut size_t,
562                              addrs: *mut ::libc::c_char,
563                              addrs_len: *mut size_t) -> ssize_t;
564    pub fn rados_break_lock(io: rados_ioctx_t, o: *const ::libc::c_char,
565                            name: *const ::libc::c_char,
566                            client: *const ::libc::c_char,
567                            cookie: *const ::libc::c_char) -> ::libc::c_int;
568    pub fn rados_blacklist_add(cluster: rados_t,
569                               client_address: *mut ::libc::c_char,
570                               expire_seconds: uint32_t) -> ::libc::c_int;
571    pub fn rados_mon_command(cluster: rados_t,
572                             cmd: *mut *const ::libc::c_char, cmdlen: size_t,
573                             inbuf: *const ::libc::c_char, inbuflen: size_t,
574                             outbuf: *mut *mut ::libc::c_char,
575                             outbuflen: *mut size_t,
576                             outs: *mut *mut ::libc::c_char,
577                             outslen: *mut size_t) -> ::libc::c_int;
578    pub fn rados_mon_command_target(cluster: rados_t,
579                                    name: *const ::libc::c_char,
580                                    cmd: *mut *const ::libc::c_char,
581                                    cmdlen: size_t,
582                                    inbuf: *const ::libc::c_char,
583                                    inbuflen: size_t,
584                                    outbuf: *mut *mut ::libc::c_char,
585                                    outbuflen: *mut size_t,
586                                    outs: *mut *mut ::libc::c_char,
587                                    outslen: *mut size_t) -> ::libc::c_int;
588    pub fn rados_buffer_free(buf: *mut ::libc::c_char) -> ();
589    pub fn rados_osd_command(cluster: rados_t, osdid: ::libc::c_int,
590                             cmd: *mut *const ::libc::c_char, cmdlen: size_t,
591                             inbuf: *const ::libc::c_char, inbuflen: size_t,
592                             outbuf: *mut *mut ::libc::c_char,
593                             outbuflen: *mut size_t,
594                             outs: *mut *mut ::libc::c_char,
595                             outslen: *mut size_t) -> ::libc::c_int;
596    pub fn rados_pg_command(cluster: rados_t, pgstr: *const ::libc::c_char,
597                            cmd: *mut *const ::libc::c_char, cmdlen: size_t,
598                            inbuf: *const ::libc::c_char, inbuflen: size_t,
599                            outbuf: *mut *mut ::libc::c_char,
600                            outbuflen: *mut size_t,
601                            outs: *mut *mut ::libc::c_char,
602                            outslen: *mut size_t) -> ::libc::c_int;
603    pub fn rados_monitor_log(cluster: rados_t, level: *const ::libc::c_char,
604                             cb: rados_log_callback_t,
605                             arg: *mut ::libc::c_void) -> ::libc::c_int;
606}