return CEPH_NOSNAP;
}
-string generate_uuid(librados::IoCtx& io_ctx)
-{
- Rados rados(io_ctx);
- uint64_t bid = rados.get_instance_id();
-
- uint32_t extra = rand() % 0xFFFFFFFF;
- std::ostringstream bid_ss;
- bid_ss << std::hex << bid << std::hex << extra;
- return bid_ss.str();
-}
-
int group_snap_list(librados::IoCtx& group_ioctx, const char *group_name,
std::vector<cls::rbd::GroupSnapshot> *cls_snaps)
{
{
CephContext *cct = (CephContext *)io_ctx.cct();
- string id = generate_uuid(io_ctx);
-
ldout(cct, 2) << "adding group to directory..." << dendl;
+ std::string group_id = util::generate_image_id(io_ctx);
int r = cls_client::group_dir_add(&io_ctx, RBD_GROUP_DIRECTORY, group_name,
- id);
+ group_id);
if (r < 0) {
lderr(cct) << "error adding group to directory: "
<< cpp_strerror(r)
<< dendl;
return r;
}
- string header_oid = util::group_header_name(id);
- r = io_ctx.create(header_oid, true);
+ std::string group_header_oid = util::group_header_name(group_id);
+ r = io_ctx.create(group_header_oid, true);
if (r < 0) {
lderr(cct) << "error creating group header: " << cpp_strerror(r) << dendl;
goto err_remove_from_dir;
err_remove_from_dir:
int remove_r = cls_client::group_dir_remove(&io_ctx, RBD_GROUP_DIRECTORY,
- group_name, id);
+ group_name, group_id);
if (remove_r < 0) {
lderr(cct) << "error cleaning up group from rbd_directory "
<< "object after creation failed: " << cpp_strerror(remove_r)
string group_header_oid = util::group_header_name(group_id);
- group_snap.id = generate_uuid(group_ioctx);
+ group_snap.id = util::generate_image_id(group_ioctx);
group_snap.name = string(snap_name);
group_snap.state = cls::rbd::GROUP_SNAPSHOT_STATE_INCOMPLETE;
group_snap.snaps = image_snaps;