return 0;
}
+void group_dir_add(librados::ObjectWriteOperation *op,
+ const std::string &name, const std::string &id) {
+ bufferlist bl;
+ encode(name, bl);
+ encode(id, bl);
+ op->exec("rbd", "group_dir_add", bl);
+}
+
int group_dir_add(librados::IoCtx *ioctx, const std::string &oid,
const std::string &name, const std::string &id)
{
return ioctx->operate(oid, &op);
}
+void group_dir_remove(librados::ObjectWriteOperation *op,
+ const std::string &name, const std::string &id) {
+ bufferlist bl;
+ encode(name, bl);
+ encode(id, bl);
+ op->exec("rbd", "group_dir_remove", bl);
+}
+
int group_dir_remove(librados::IoCtx *ioctx, const std::string &oid,
const std::string &name, const std::string &id)
{
return ioctx->operate(oid, &op);
}
-int group_image_remove(librados::IoCtx *ioctx, const std::string &oid,
- const cls::rbd::GroupImageSpec &spec)
-{
+void group_image_remove(librados::ObjectWriteOperation *op,
+ const cls::rbd::GroupImageSpec &spec) {
bufferlist bl;
encode(spec, bl);
+ op->exec("rbd", "group_image_remove", bl);
+}
+int group_image_remove(librados::IoCtx *ioctx, const std::string &oid,
+ const cls::rbd::GroupImageSpec &spec) {
librados::ObjectWriteOperation op;
- op.exec("rbd", "group_image_remove", bl);
+ group_image_remove(&op, spec);
+
return ioctx->operate(oid, &op);
}
-int group_image_list(librados::IoCtx *ioctx,
- const std::string &oid,
- const cls::rbd::GroupImageSpec &start,
- uint64_t max_return,
- std::vector<cls::rbd::GroupImageStatus> *images)
-{
- bufferlist bl, bl2;
+void group_image_list_start(librados::ObjectReadOperation *op,
+ const cls::rbd::GroupImageSpec &start,
+ uint64_t max_return) {
+ bufferlist bl;
encode(start, bl);
encode(max_return, bl);
+ op->exec("rbd", "group_image_list", bl);
+}
- int r = ioctx->exec(oid, "rbd", "group_image_list", bl, bl2);
- if (r < 0)
- return r;
-
- auto iter = bl2.cbegin();
+int group_image_list_finish(bufferlist::const_iterator *iter,
+ std::vector<cls::rbd::GroupImageStatus> *images) {
try {
- decode(*images, iter);
+ decode(*images, *iter);
} catch (const ceph::buffer::error &err) {
return -EBADMSG;
}
return 0;
}
-int group_image_set(librados::IoCtx *ioctx, const std::string &oid,
- const cls::rbd::GroupImageStatus &st)
-{
+int group_image_list(librados::IoCtx *ioctx,
+ const std::string &oid,
+ const cls::rbd::GroupImageSpec &start,
+ uint64_t max_return,
+ std::vector<cls::rbd::GroupImageStatus> *images) {
+ librados::ObjectReadOperation op;
+ group_image_list_start(&op, start, max_return);
+
+ bufferlist out_bl;
+ int r = ioctx->operate(oid, &op, &out_bl);
+ if (r < 0) {
+ return r;
+ }
+
+ auto it = out_bl.cbegin();
+ return group_image_list_finish(&it, images);
+}
+
+void group_image_set(librados::ObjectWriteOperation *op,
+ const cls::rbd::GroupImageStatus &state) {
bufferlist bl;
- encode(st, bl);
+ encode(state, bl);
+ op->exec("rbd", "group_image_set", bl);
+}
+int group_image_set(librados::IoCtx *ioctx, const std::string &oid,
+ const cls::rbd::GroupImageStatus &state) {
librados::ObjectWriteOperation op;
- op.exec("rbd", "group_image_set", bl);
+ group_image_set(&op, state);
+
return ioctx->operate(oid, &op);
}
-int image_group_add(librados::IoCtx *ioctx, const std::string &oid,
- const cls::rbd::GroupSpec &group_spec)
-{
+void image_group_add(librados::ObjectWriteOperation *op,
+ const cls::rbd::GroupSpec &group_spec) {
bufferlist bl;
encode(group_spec, bl);
+ op->exec("rbd", "image_group_add", bl);
+}
+int image_group_add(librados::IoCtx *ioctx, const std::string &oid,
+ const cls::rbd::GroupSpec &group_spec) {
librados::ObjectWriteOperation op;
- op.exec("rbd", "image_group_add", bl);
+ image_group_add(&op, group_spec);
+
return ioctx->operate(oid, &op);
}
-int image_group_remove(librados::IoCtx *ioctx, const std::string &oid,
- const cls::rbd::GroupSpec &group_spec)
-{
+void image_group_remove(librados::ObjectWriteOperation *op,
+ const cls::rbd::GroupSpec &group_spec) {
bufferlist bl;
encode(group_spec, bl);
+ op->exec("rbd", "image_group_remove", bl);
+}
+int image_group_remove(librados::IoCtx *ioctx, const std::string &oid,
+ const cls::rbd::GroupSpec &group_spec)
+{
librados::ObjectWriteOperation op;
- op.exec("rbd", "image_group_remove", bl);
+ image_group_remove(&op, group_spec);
+
return ioctx->operate(oid, &op);
}
return image_group_get_finish(&iter, group_spec);
}
+void group_snap_set(librados::ObjectWriteOperation *op,
+ const cls::rbd::GroupSnapshot &snapshot) {
+ bufferlist bl;
+ encode(snapshot, bl);
+ op->exec("rbd", "group_snap_set", bl);
+}
+
int group_snap_set(librados::IoCtx *ioctx, const std::string &oid,
const cls::rbd::GroupSnapshot &snapshot)
{
int group_snap_get_by_id(librados::IoCtx *ioctx, const std::string &oid,
const std::string &snap_id,
- cls::rbd::GroupSnapshot *snapshot)
-{
- using ceph::encode;
- using ceph::decode;
- bufferlist inbl, outbl;
+ cls::rbd::GroupSnapshot *snapshot) {
+ librados::ObjectReadOperation op;
+ group_snap_get_by_id_start(&op, snap_id);
- encode(snap_id, inbl);
- int r = ioctx->exec(oid, "rbd", "group_snap_get_by_id", inbl, outbl);
+ bufferlist out_bl;
+ int r = ioctx->operate(oid, &op, &out_bl);
+ if (r < 0) {
+ return r;
+ }
+
+ auto iter = out_bl.cbegin();
+ r = group_snap_get_by_id_finish(&iter, snapshot);
if (r < 0) {
return r;
}
+ return 0;
+}
- auto iter = outbl.cbegin();
+void group_snap_get_by_id_start(librados::ObjectReadOperation *op,
+ const std::string &snap_id) {
+ bufferlist bl;
+ encode(snap_id, bl);
+ op->exec("rbd", "group_snap_get_by_id", bl);
+}
+
+int group_snap_get_by_id_finish(ceph::buffer::list::const_iterator *iter,
+ cls::rbd::GroupSnapshot *snapshot) {
try {
- decode(*snapshot, iter);
+ decode(*snapshot, *iter);
} catch (const ceph::buffer::error &err) {
return -EBADMSG;
}
-
return 0;
}
int group_dir_list(librados::IoCtx *ioctx, const std::string &oid,
const std::string &start, uint64_t max_return,
std::map<std::string, std::string> *groups);
+void group_dir_add(librados::ObjectWriteOperation *op,
+ const std::string &name, const std::string &id);
int group_dir_add(librados::IoCtx *ioctx, const std::string &oid,
const std::string &name, const std::string &id);
int group_dir_rename(librados::IoCtx *ioctx, const std::string &oid,
const std::string &src, const std::string &dest,
const std::string &id);
+void group_dir_remove(librados::ObjectWriteOperation *op,
+ const std::string &name, const std::string &id);
int group_dir_remove(librados::IoCtx *ioctx, const std::string &oid,
const std::string &name, const std::string &id);
+void group_image_remove(librados::ObjectWriteOperation *op,
+ const cls::rbd::GroupImageSpec &spec);
int group_image_remove(librados::IoCtx *ioctx, const std::string &oid,
const cls::rbd::GroupImageSpec &spec);
+void group_image_list_start(librados::ObjectReadOperation *op,
+ const cls::rbd::GroupImageSpec &start,
+ uint64_t max_return);
+int group_image_list_finish(ceph::buffer::list::const_iterator *iter,
+ std::vector<cls::rbd::GroupImageStatus> *images);
int group_image_list(librados::IoCtx *ioctx, const std::string &oid,
const cls::rbd::GroupImageSpec &start,
uint64_t max_return,
std::vector<cls::rbd::GroupImageStatus> *images);
+void group_image_set(librados::ObjectWriteOperation *op,
+ const cls::rbd::GroupImageStatus &st);
int group_image_set(librados::IoCtx *ioctx, const std::string &oid,
const cls::rbd::GroupImageStatus &st);
+void image_group_add(librados::ObjectWriteOperation *op,
+ const cls::rbd::GroupSpec &group_spec);
int image_group_add(librados::IoCtx *ioctx, const std::string &oid,
const cls::rbd::GroupSpec &group_spec);
+void image_group_remove(librados::ObjectWriteOperation *op,
+ const cls::rbd::GroupSpec &group_spec);
int image_group_remove(librados::IoCtx *ioctx, const std::string &oid,
const cls::rbd::GroupSpec &group_spec);
void image_group_get_start(librados::ObjectReadOperation *op);
cls::rbd::GroupSpec *group_spec);
int image_group_get(librados::IoCtx *ioctx, const std::string &oid,
cls::rbd::GroupSpec *group_spec);
+void group_snap_set(librados::ObjectWriteOperation *op,
+ const cls::rbd::GroupSnapshot &snapshot);
int group_snap_set(librados::IoCtx *ioctx, const std::string &oid,
const cls::rbd::GroupSnapshot &snapshot);
int group_snap_remove(librados::IoCtx *ioctx, const std::string &oid,
uint64_t max_return);
int group_snap_list_finish(ceph::buffer::list::const_iterator *iter,
std::vector<cls::rbd::GroupSnapshot> *snapshots);
+void group_snap_get_by_id_start(librados::ObjectReadOperation *op,
+ const std::string &snap_id);
+int group_snap_get_by_id_finish(ceph::buffer::list::const_iterator *iter,
+ cls::rbd::GroupSnapshot *snapshot);
int group_snap_list(librados::IoCtx *ioctx, const std::string &oid,
const cls::rbd::GroupSnapshot &start,
uint64_t max_return,
int group_snap_list_order(librados::IoCtx *ioctx, const std::string &oid,
const std::string &snap_id, uint64_t max_return,
std::map<std::string, uint64_t> *snap_order);
-
// operations on rbd_trash object
void trash_add(librados::ObjectWriteOperation *op,
const std::string &id,