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 "common/snap_types.h"
8
#include "include/rados.h"
9
#include "include/rados/librados.hpp"
10
#include "include/types.h"
16
namespace cls_client {
18
// high-level interface to the header
19
int get_immutable_metadata(librados::IoCtx *ioctx, const std::string &oid,
20
std::string *object_prefix, uint8_t *order);
21
int get_mutable_metadata(librados::IoCtx *ioctx, const std::string &oid,
22
uint64_t *size, uint64_t *features,
23
uint64_t *incompatible_features,
24
::SnapContext *snapc);
26
// low-level interface (mainly for testing)
27
int create_image(librados::IoCtx *ioctx, const std::string &oid,
28
uint64_t size, uint8_t order, uint64_t features,
29
const std::string &object_prefix);
30
int get_features(librados::IoCtx *ioctx, const std::string &oid,
31
uint64_t snap_id, uint64_t *features);
32
int get_object_prefix(librados::IoCtx *ioctx, const std::string &oid,
33
std::string *object_prefix);
34
int get_size(librados::IoCtx *ioctx, const std::string &oid,
35
uint64_t snap_id, uint64_t *size, uint8_t *order);
36
int set_size(librados::IoCtx *ioctx, const std::string &oid,
38
int snapshot_add(librados::IoCtx *ioctx, const std::string &oid,
39
uint64_t snap_id, const std::string &snap_name);
40
int snapshot_remove(librados::IoCtx *ioctx, const std::string &oid,
42
int get_snapcontext(librados::IoCtx *ioctx, const std::string &oid,
43
::SnapContext *snapc);
44
int snapshot_list(librados::IoCtx *ioctx, const std::string &oid,
45
const std::vector<snapid_t> &ids,
46
std::vector<string> *names,
47
std::vector<uint64_t> *sizes,
48
std::vector<uint64_t> *features);
49
int assign_bid(librados::IoCtx *ioctx, const std::string &oid,
53
// class operations on the old format, kept for
54
// backwards compatability
55
int old_snapshot_add(librados::IoCtx *ioctx, const std::string &oid,
56
uint64_t snap_id, const std::string &snap_name);
57
int old_snapshot_remove(librados::IoCtx *ioctx, const std::string &oid,
58
const std::string &snap_name);
59
int old_snapshot_list(librados::IoCtx *ioctx, const std::string &oid,
60
std::vector<string> *names,
61
std::vector<uint64_t> *sizes,
62
::SnapContext *snapc);
63
} // namespace cls_client
65
#endif // CEPH_LIBRBD_CLS_RBD_CLIENT_H